[英]“opaque” pointer in ffmpeg AVFrame
在ffmpeg
有一個AVFrame結構,描述解碼的視頻或音頻數據。
它具有一個opaque
的空指針。 該文檔聲稱它是“用於用戶的某些私人數據”。
這是什么意思? 可以將其用於按幀元數據傳輸任何其他數據嗎?
這是一個專門供用戶(與ffmpeg庫相對)使用的字段; ffmpeg不會以任何方式觸摸此字段,因此您可以隨意使用它。 需要注意的是:某些ffmpeg函數將復制AVFrame(或將引用從AVFrame移至另一個),其中包括復制該字段的值。 管理此字段指向的數據的生存期可能有些棘手。
如果只需要處理一些每幀的元數據,則可能需要考慮AVFrame中可用的現有元數據存儲(請參閱av_frame_get_metadata/av_frame_set_metadata
)
為了進一步擴展@Andrey Turkin所說的內容,目的是將特定於應用程序的對象數據添加到AVFrame結構中。 特定的用例通常是在應用程序分配內存時(使用get_buffer2回調)。 該內存可能只是一個指針,但有時也可能是GPU中的內存或類似的東西。 無論如何,如果應用程序擁有數據並創建與分配的內存/圖片緩沖區關聯的對象,則當解碼器在avcodec_decode_video2()
函數中返回給定的AVFrame時,它通常會希望訪問關聯的對象,而這正是您通常想要的使用不透明字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.