KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I set profile_idc, level_idc, extradata et extradata_size of AvCodecContext with the profile-level-id et sprop-parameter-set of the SDP. I separate the decoding of Coded Slice, SPS, PPS and NAL_IDR_SLICE packet : Init: uint8_t start_sequence[]= {0, 0, 1}; int size= recv(id_de_la_socket,(char*) rtpReceive,65535,0); Coded Slice : char *z = new char[size-16+sizeof(start_sequence)]; memcpy(z,&start_sequence,sizeof(start_sequence)); memcpy(z+sizeof(start_sequence),rtpReceive+16,size-16); ConsumedBytes = avcodec_decode_video(codecContext,pFrame,&GotPicture,(uint8_t*)z,size-16+sizeof(start_sequence)); delete z; Result: ConsumedBytes >0 and GotPicture >0 (often) SPS and PPS : identical code. Result: ConsumedBytes >0 and GotPicture =0 It's normal I think When I find a new couple SPS/PPS, I update extradata and extrada_size with the payloads of this packet and their size. NAL_IDR_SLICE : The Nal unit type is 28 =>idr Frame are fragmented therefor I tryed two method to decode 1) I prefix the first fragment (without RTP header) with the sequence 0x000001 and send it to avcodec_decode_video. Then I send the rest of fragments to this function. 2) I prefix the first fragment (without RTP header) with the sequence 0x000001 and concatenate the rest of fragments to it. I send this buffer to decoder. In both cases, I have no error (ConsumedBytes >0) but I detect no frame (GotPicture = 0) ... What is the problem ?
Tags (comma-separated)
Save Edits
Cancel