<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div bgcolor="#ffffff"><font face="Arial"><div>Last I checked which was quite awhile ago, the EXIF was only available in a 
successfully decoded frame and the frames metadata.</div>
<div> </div>
<div>I mentioned this also long ago and while it does possibly make sense for 
multi-frame files, it does not make much sense for a single frame jpeg 
file.</div>
<div> </div>
<div>I don't know if this is still the case because I don't use ffmpeg for 
single frame jpegs still. It may have improved but don't 
know.</div><div><br></div></font></div></blockquote><div><br></div><div>I tried with your advice, but no success. frame->metadata is null (also <font face="arial, helvetica, sans-serif">fmt_ctx->metadata is null</font>). </div><div>This is the code I used for the test (there is no error checking for simplicity):</div><div><br></div><div><font face="courier new, monospace">int ret = 0;</font></div><div><div><font face="courier new, monospace">AVFormatContext *fmt_ctx = NULL;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">av_register_all();<br></font></div><div><font face="courier new, monospace"><br></font></div><div><span style="font-family:'courier new',monospace">ret = avformat_open_input(&fmt_ctx, "C:\\tmp\\still\\p.jpg", NULL, NULL);</span><br></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">ret = avformat_find_stream_info(fmt_ctx, NULL);</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">AVCodec* codec = avcodec_find_decoder(fmt_ctx->streams[0]->codec->codec_id);</font></div><div><font face="courier new, monospace">ret = avcodec_open2(fmt_ctx->streams[0]->codec, codec, NULL);</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">AVPacket pkt;</font></div><div><font face="courier new, monospace">av_init_packet(&pkt);</font></div><div><font face="courier new, monospace">pkt.data = NULL;</font></div><div><font face="courier new, monospace">pkt.size = 0;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">ret = av_read_frame(fmt_ctx, &pkt);</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">AVFrame* frame = avcodec_alloc_frame();</font></div><div><font face="courier new, monospace">int got_pict = 0;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">do</font></div><div><font face="courier new, monospace">{</font></div><div><font face="courier new, monospace">   ret = avcodec_decode_video2(fmt_ctx->streams[0]->codec, frame, &got_pict, &pkt);</font></div><div><span class="" style="white-space:pre"><font face="courier new, monospace">             </font></span></div><div><font face="courier new, monospace"><span style="white-space:pre">   </span>av_packet_unref(&pkt);</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace"><span style="white-space:pre">   </span>pkt.data = NULL; // request flush</font></div><div><font face="courier new, monospace"><span style="white-space:pre">   </span>pkt.size = 0;</font></div><div><font face="courier new, monospace">}</font></div><div><font face="courier new, monospace">while (!got_pict && ret >= 0);</font></div><div><font face="courier new, monospace"><br></font></div><div><span style="font-family:'courier new',monospace">// TAGS reading</span><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">AVDictionaryEntry *tag = NULL;</font></div><div><font face="courier new, monospace">while (tag = av_dict_get(frame->metadata, "", tag, AV_DICT_IGNORE_SUFFIX))</font></div><div><font face="courier new, monospace">{</font></div><div><font face="courier new, monospace">   printf("%s=%s\n", tag->key, tag->value);</font></div><div><font face="courier new, monospace">}</font></div><div><br></div><div><font face="courier new, monospace">avformat_close_input(&fmt_ctx);</font></div></div><div> </div><div><br></div><div>Could someone please help me finding what's wrong?</div><div><br></div><div>thanks,</div><div>MB</div></div>
</div></div>