簡體   English   中英

ffmpeg AVFrame中的“不透明”指針

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM