/** * Picture data structure. * * Up to four components can be stored into it, the last component is * alpha. */ typedef struct AVPicture { uint8_t *data[AV_NUM_DATA_POINTERS]; ///< pointers to the image data planes int linesize[AV_NUM_DATA_POINTERS]; ///< number of bytes per line } AVPicture;
avcodec.h頭文件中的定義。其中的AV_NUM_DATA_POINTERS在AVFrame的結構體定義中定義以下: 數組
typedef struct AVFrame { #define AV_NUM_DATA_POINTERS 8 ……
那麼AVPicture結構體中保存兩個東西: 函數
1 data指針數組(8個元素的數組)(數組的每個元素都是一個uint8_t類型的指針); ui
2 linesize數組(8個元素的數組),(每一行的字節數); 指針
分析這個結構體最重要的一點就是:AVFrame和AVPicture的關係,AVPicture結構體的成員就是AVFrame結構體的強兩個成員,這樣在一些函數中就能夠直接經過AVPicture結構體指針去訪問AVFrame結構體變量。能夠進行類型轉換。 code