How to fill 'extradata' field of AVCodecContext with SPS and PPS data?

前端 未结 2 1907
北海茫月
北海茫月 2021-01-03 07:54

Here is the problem: When decoding H264 stream with ffmpeg, I can obtain raw data of SPS and PPS but I have no idea how to fill them into the extradata

2条回答
  •  暖寄归人
    2021-01-03 08:17

    The data you mentioned is a byte stream holding NAL units for SPS and PPS. extradata in turn expects a pointer to AVC decoder configuration record, which is the data you have with extra formatting.

    See MPEG-4 Part 15 "Advanced Video Coding (AVC) file format" section 5.2.4.1 for details.

    5.2.4.1.1 Syntax 
    
    aligned(8) class AVCDecoderConfigurationRecord { 
       unsigned int(8) configurationVersion = 1; 
       unsigned int(8) AVCProfileIndication; 
       unsigned int(8) profile_compatibility; 
       unsigned int(8) AVCLevelIndication;  
       bit(6) reserved = ‘111111’b;
       unsigned int(2) lengthSizeMinusOne;  
       bit(3) reserved = ‘111’b;
       unsigned int(5) numOfSequenceParameterSets; 
       for (i=0; i< numOfSequenceParameterSets;  i++) { 
          unsigned int(16) sequenceParameterSetLength ; 
      bit(8*sequenceParameterSetLength) sequenceParameterSetNALUnit; 
     } 
       unsigned int(8) numOfPictureParameterSets; 
       for (i=0; i< numOfPictureParameterSets;  i++) { 
      unsigned int(16) pictureParameterSetLength; 
      bit(8*pictureParameterSetLength) pictureParameterSetNALUnit; 
     } 
    }
    

提交回复
热议问题