Re: [問題] ffmpeg解h264的stream

看板C_and_CPP作者 (有些事,有時候。。。)時間12年前 (2012/03/24 11:21), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《SocketAM2 (AM2)》之銘言: : 第二個問題: : avcodec_decode_video2()成功解碼,把畫面存在AVFrame pFrame裡面之後, : 若我想要把這個解好的畫面"長寬大小不變"的依據Y、U、V取出存在另一塊記憶體中, : 我需要知道這個解完的frame的編碼方式(YUV420、422或其他等等) : 和在AVFrame pFrame中存放排列的方法, : 請問有人知道要怎麼獲取這段解好的原始資料嗎? : 現在暫時可行的做法是使用sws_scale(),因為它的output是我知道排列方式的。 : 但我擔心即使是透過sws_scale()做"原尺寸、原編碼方式"的輸出, : 實際上仍然需要相當的計算effort, : 也就是這一步造成了多於計算資源的浪費。 : 小弟希望在有限的電腦上盡可能的快速處理大量高解析度影像, : 故對效率性希望能做一些提高。 單純要取 yuv data 可以這麼做: AVFrame *pFrame = ... uint8_t *data = .... int y_size = pFrame->linesize[0] * height; int u_size = pFrame->linesize[1] * height; int v_size = pFrame->linesize[2] * height; data = malloc .... memcpy(data, pFrame->data[0], sizeof(uint8_t) * y_size); memcpy(data + y_size, pFrame->data[1], sizeof(uint8_t) * u_size); memcpy(data + y_size + v_size, pFrame->data[2], sizeof(uint8_t) * v_size); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.248.248

03/24 11:21, , 1F
不過不確定你想做什麼最佳化,但 arm 跟 mips 部分的最佳化
03/24 11:21, 1F

03/24 11:22, , 2F
應該會比 x86 還需要,印象中那邊好像沒有正式的 code !?
03/24 11:22, 2F
文章代碼(AID): #1FRJsSza (C_and_CPP)
文章代碼(AID): #1FRJsSza (C_and_CPP)