<div dir="ltr">Hi Niraj <div><br></div><div>Thanks for taking the time to respond to the question. I added the options you recommend. I don't have a file or a image source to open - I already have a AVPacket. I just opened a dummy format and format context and set the options that your mentioned. </div><div>I still see the same error when I call swscaler - bad src image pointers. </div><div><br></div><div>Thanks </div><div><br></div><div>--</div><div>Jimmy </div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Sep 24, 2018 at 12:48 PM Niraj Gandha <<a href="mailto:niraj.gandha@einfochips.com">niraj.gandha@einfochips.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
Use this code Jimmy Bhaktha....<br>
<br>
</div>
<div align="left">
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
Code for the issue and getting rgb frames from raw H.264 Frame  is as follows:<br>
</div>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
avcodec_register_all(); av_register_all(); avformat_network_init(); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
AVDictionary *options = NULL; <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
AVFormatContext *refrenceFormatCtx = NULL;<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
AVInputFormat *fmts = av_find_input_format("h264");<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
char errorsdef[100]; <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
AVCodecContext* codec_ctx = NULL;<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
int video_stream_index = 0; <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
SwsContext *img_convert_ctx = NULL; <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
AVFrame* picture_yuv = NULL; <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
AVFrame* picture_rgb = NULL; <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
uint8_t* picture_buffer_rgb; <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
uint8_t *rgb_image_data;<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
int sizeofrgbpicture = 0; <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
int initialize_rgb_requirements=1; <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
picture_yuv = av_frame_alloc(); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
av_dict_set(&options, "flags", "bicubic", 0); av_opt_set(refrenceFormatCtx,"f","h264", AV_OPT_SEARCH_CHILDREN); av_opt_set(refrenceFormatCtx,"codec:v","h264",AV_OPT_SEARCH_CHILDREN);
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
av_opt_set(refrenceFormatCtx,"probesize","32M", AV_OPT_SEARCH_CHILDREN); <font color="#888888">
// Open video file</font> int err = <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
avformat_open_input(&refrenceFormatCtx,"tcp://<a href="http://192.168.42.129:2226" target="_blank">192.168.42.129:2226</a>", fmts, &options);
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
if (!options) {<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
int dict_count = av_dict_count(options); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
qDebug() << "dict_count " << dict_count;<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
} <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
av_strerror(err,errorsdef,100);<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
qDebug() << "OPening Stream error: "<< err << " "<< errorsdef;<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
if (refrenceFormatCtx!=NULL){<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
err = avformat_find_stream_info(refrenceFormatCtx, &options); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
if( err< 0){ <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
av_strerror(err,errorsdef,100); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
qDebug() << "Not able to find stream: "<< err << " "<< errorsdef; <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
     }<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
}else{<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
qDebug() << "referencecontext null";<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
exit(1);<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
} <font color="#888888">//search video stream</font><br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
for (int i = 0; i < (int)refrenceFormatCtx->nb_streams; i++) <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
{ <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
AVStream* s = refrenceFormatCtx->streams[i];<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
if (s->codec == NULL){ <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
continue; <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
}<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
codec_ctx = (s->codec); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
if (codec_ctx->codec_type == AVMEDIA_TYPE_VIDEO){<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
video_stream_index = i;<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
}<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
} <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
AVPacket packet; av_init_packet(&packet); <font color="#888888">//open output file</font><br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
AVFormatContext* output_ctx = avformat_alloc_context();<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
AVStream* stream = NULL; <font color="#888888">//start reading packets from stream and emit data pointer to slot</font><br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
av_read_play(refrenceFormatCtx); <font color="#888888">//play RTSP</font><br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
avcodec_copy_context(codec_ctx, refrenceFormatCtx->streams[video_stream_index]->codec);
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
if (avcodec_open2(codec_ctx, avcodec_find_decoder(AV_CODEC_ID_H264), NULL) < 0){ <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
qDebug() << "avcodec_open2 null";<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
} while (av_read_frame(refrenceFormatCtx, &packet) >= 0) {<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
if (packet.stream_index == video_stream_index) { <font color="#888888">//packet is video</font><br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
if (stream == NULL) { <font color="#888888">//create stream in file</font> <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
stream = avformat_new_stream(output_ctx, refrenceFormatCtx->streams[video_stream_index]->codec->codec);<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
avcodec_copy_context(stream->codec, refrenceFormatCtx->streams[video_stream_index]->codec);<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
stream->sample_aspect_ratio = refrenceFormatCtx->streams[video_stream_index]->codec->sample_aspect_ratio;<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
} int check = 0; packet.stream_index = stream->id; int result = av<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
codec_decode_video2(codec_ctx, picture_yuv, &check, &packet); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
av_free_packet(&packet); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
av_packet_unref(&packet); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
if(result <= 0 || check == 0){<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
continue;<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
}<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
if(initialize_rgb_requirements) {<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
sizeofrgbpicture = avpicture_get_size(AV_PIX_FMT_RGB24, codec_ctx->width, codec_ctx->height);
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
picture_rgb = av_frame_alloc(); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
picture_buffer_rgb = (uint8_t*) (av_malloc(sizeofrgbpicture)); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
avpicture_fill((AVPicture *) picture_rgb, picture_buffer_rgb, AV_PIX_FMT_RGB24, codec_ctx->width, codec_ctx->height);
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
img_convert_ctx = sws_getContext(codec_ctx->width, codec_ctx->height, AV_PIX_FMT_YUV420P, codec_ctx->width, codec_ctx->height, AV_PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL); initialize_rgb_requirements=0;
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
}<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
int height = 0;<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
if(picture_yuv->data != NULL) { height = sws_scale(img_convert_ctx, ((AVPicture*)picture_yuv)->data, ((AVPicture*)picture_yuv)->linesize, 0, codec_ctx->height, ((AVPicture*)picture_rgb)->data,((AVPicture*)picture_rgb)->linesize);<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
}<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
rgb_image_data = (uint8_t *)malloc(sizeofrgbpicture * sizeof(uint8_t));<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
int ret = avpicture_layout((AVPicture *)picture_rgb, AV_PIX_FMT_RGB24, codec_ctx->width, codec_ctx->height, rgb_image_data, sizeofrgbpicture);<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
emit imageQueued(rgb_image_data, codec_ctx->width,codec_ctx->height);<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
} <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
msleep(1); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
} <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
av_freep(picture_buffer_rgb);<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
av_frame_free(&picture_rgb); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
avio_close(output_ctx->pb); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
avformat_free_context(output_ctx); avformat_close_input(&refrenceFormatCtx);<br>
<br>
</div>
<div align="left">
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
we have to tell ffmpeg that the format is h264. For that I have used AVInputFormat, to set other options like video codec and probesize, I have used av_op_set(). To set the default flags in ffmpeg, I have used av_dict_set(). I have emitted the data pointer
 to my required slot. If any one wants to create a file from it, then it can generate .ppm file by writing this pointer into file.<br>
</div>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<br>
<br>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-size:16px;font-family:"Times New Roman"">
<tr><td><b>
<tbody>
<tr>
<td rowspan="1" colspan="2" style="font-family:Calibri,sans-serif;font-size:14px;color:rgb(0,75,118)">
<b></b></td>
<td rowspan="1" colspan="2" style="font-family:Calibri,sans-serif;font-size:14px;color:rgb(0,75,118)">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr>
</tr>
<tr><td>
Thanks & Regards,
</td></tr>
</tbody>
</table>
</td>
</tr></tbody></b>


</td></tr></table>
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr>
<td><b>Niraj Gandha</b>
</td></tr>
</tbody>
</table>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr><td>
Trainee Engineer | PES 
</td></tr>
</tbody>
</table>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
</table>
<br>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman""><tr><td>
Tel: 7016116093 | Cell: 9408781216 | Ext.: 3318
</td></tr></table>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman""><tr><td>
Product Engineering Services
</td></tr></table>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman""><tr><td>
Software | System | Silicon | Mechanical
</td></tr></table>
<table cellspacing="0" style="font-family:"Times New Roman"">
</table>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<a href="http://www.einfochips.com/" target="_blank"></a>
<table cellspacing="0" style="font-family:"Times New Roman"">
<tr><td><a href="http://www.einfochips.com" target="_blank">www.einfochips.com</a>
</td></tr></table>
<table cellspacing="0" style="font-family:"Times New Roman""><tr><td>
 | 
</td></tr></table>
<table cellspacing="0" style="font-family:"Times New Roman"">
<tr><td><a href="mailto:niraj.gandha@einfochips.com" target="_blank">niraj.gandha@einfochips.com</a>
</td></tr></table>
<table cellspacing="0" style="font-family:"Times New Roman"">
</table>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
</table>
<br>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr><td>
  
</td></tr>
</tbody>
</table>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr>
</tr>
</tbody>
</table>
<br>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr><td>
  
</td></tr>
</tbody>
</table>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr>
</tr>
</tbody>
</table>
<br>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr><td>
  
</td></tr>
</tbody>
</table>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr>
</tr>
</tbody>
</table>
<br>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr><td>
  
</td></tr>
</tbody>
</table>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr>
</tr>
</tbody>
</table>
<br>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr><td>
  
</td></tr>
</tbody>
</table>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr>
</tr>
</tbody>
</table>
<br>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr><td>
  
</td></tr>
</tbody>
</table>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
</table>
<br>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr>
<td rowspan="1" colspan="2" style="font-family:Calibri,sans-serif;font-size:14px;color:rgb(0,75,118)">
20 Years of Engineering Innovation & Excellence</td>
</tr>
</tbody>
</table>
<table cellspacing="0" style="font-family:"Times New Roman"">
<tbody>
<tr><td>
Recognized as 'Leader' in Zinnov's Global Service Providers Rating-2015
</td></tr>
</tbody>
</table>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<b><font color="#000000">From:</font></b><font color="#000000"> Libav-user <<a href="mailto:libav-user-bounces@ffmpeg.org" target="_blank">libav-user-bounces@ffmpeg.org</a>> on behalf of Jimmy Bhaktha <<a href="mailto:jimmy@accelrobotics.com" target="_blank">jimmy@accelrobotics.com</a>></font><br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<b><font color="#000000">Sent:</font></b><font color="#000000"> Tuesday, September 25, 2018 12:55:49 AM</font><br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<font color="#000000"><b>To:</b></font><font color="#000000"> <a href="mailto:libav-user@ffmpeg.org" target="_blank">libav-user@ffmpeg.org</a></font><br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<font color="#000000"><b>Subject:</b></font><font color="#000000"> [External] [Libav-user] (no subject)</font>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
  <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
Hi  <br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
I am working on an application based on FFMPEG version 3.4.2 where the RTSP packets from the camera are captured and store using python. The decoder application is run later.  The application receives a  byte array which is the actual packet. The goal is to
 decode the received packet and convert it to RGB from YUV.  <br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
When I feed it packets I see the following output  <br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
Creating the codec h264 <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
Creating the codec context <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
[h264 @ 0x557a3846d880] nal_unit_type: 7, nal_ref_idc: 3 <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
[h264 @ 0x557a3846d880] nal_unit_type: 8, nal_ref_idc: 3                                                                                                                                                                    
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
[h264 @ 0x557a3846d880] nal_unit_type: 5, nal_ref_idc: 3                                                                                                                                                                    
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
[h264 @ 0x557a3846d880] Reinit context to 2688x1520, pix_fmt: yuvj420p                                                                                                                                                      
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
avcodec_send_packet=0                                                                                                                                                                                                       
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
avcodec_receive_frame=0, pCodecCtx->frame_number=1 <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<font color="#ff0000">[swscaler @ 0x557a385fdb20] bad src image pointers</font> <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
avcodec_send_packet=0                                                                                                                                                                                                       
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
avcodec_receive_frame=0, pCodecCtx->frame_number=2 <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
<font color="#ff0000">[swscaler @ 0x557a385fdb20] bad src image pointers</font> <br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
I was  wondering why the swscaler is complaining about bad src images.  <br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
Here is the sequence of calls in my code  <br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
1.  av_packet_alloc() and av_packet_init() <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
     - copy the encoded image to packet->data (I extend it by AV_INPUT_BUFFER_PADDING_SIZE and set the memory to zero
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
2.  av_register_all(); <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
3.  Create the codec and Codec Context for h264 and open it.  <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
    - I Copy the extra data from the encoded frame to this context.  <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
4. Allocate the memory for the frames (YUV and RGB)  <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
5. First time using the coded I call decode - I see the codec context now has the correct values for height and width. 
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
    - For decoding I use the avcodec_send_packet and check in a while loop for avcodec_receive_frame() I see the number of decoded frames in the codec context goes up (pCodecCtx->frame_number) 
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
6. Use this codec context to set up the sws_context  <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
7. Use the sws_context and the YUV frame decoded to get the RGB frame.  <br>
<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
-- <br>
</div>
<div dir="auto" style="direction:ltr;margin:0;padding:0;font-family:sans-serif;font-size:11pt;color:black">
Jimmy Bhaktha <br>
</div>
************************************************************************************************************************************************************* eInfochips Business Disclaimer: This e-mail message and all attachments transmitted with it are intended
 solely for the use of the addressee and may contain legally privileged and confidential information. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you
 are hereby notified that any dissemination, distribution, copying, or other use of this message or its attachments is strictly prohibited. If you have received this message in error, please notify the sender immediately by replying to this message and please
 delete it from your computer. Any views expressed in this message are those of the individual sender unless otherwise stated. Company has taken enough precautions to prevent the spread of viruses. However the company accepts no liability for any damage caused
 by any virus transmitted by this email. *************************************************************************************************************************************************************
</div>

_______________________________________________<br>
Libav-user mailing list<br>
<a href="mailto:Libav-user@ffmpeg.org" target="_blank">Libav-user@ffmpeg.org</a><br>
<a href="http://ffmpeg.org/mailman/listinfo/libav-user" rel="noreferrer" target="_blank">http://ffmpeg.org/mailman/listinfo/libav-user</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Jimmy Bhaktha</div></div>