decode_h264(const uint8_t* in_buf, int in_buf_size, uint8_t** out_buf, int* out_buf_size,UserRenderInfo &userInfo) { while(in_buf_size > 0) { int len = 0; len = av_parser_parse2(userInfo.pDecoderParserContext,userInfo.pCodecCtx, &m_avpkt.data, &m_avpkt.size, in_buf, in_buf_size, 0, 0, 0); in_buf += len; in_buf_size -= len; if(m_avpkt.size > 0) { int res; res = avcodec_decode_video2(userInfo.pCodecCtx, userInfo.pFrame,&got_picture,&m_avpkt); av_free_packet(&m_avpkt); if (got_picture) { sws_scale(userInfo.decoderConvertCtx, userInfo.pFrame->data, userInfo.pFrame- >linesize , 0, userInfo.pFrame->height, userInfo.pOutFrame->data, userInfo.pOutFrame->linesize); *out_buf_size = userInfo.pOutFrame->linesize[0]; *out_buf = userInfo.pOutFrame->data[0]; } } break; } }