<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1436636312;
        mso-list-type:hybrid;
        mso-list-template-ids:579108868 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>I am seeking any information beyond the ffmpeg sources and the dranger tutorial describing how to configure an AVDictionary for video playback.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I am just wrapping up a new version of an ffmpeg 4.2.3 LibAV based player library optimized for computer vision applications. (Optimized for CV means no audio or subtitle processing, ignoring each video frame’s timing too, just frames ASAP.) I’ve been the maintainer of this internal to my employer library for 5 years now, yet my understanding of how to maintain optimum performance each ffmpeg library version is a process of trial and error with AVDictionary settings and lots of googling. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>FWIW, I’ve practically memorized all the libav posts on stackoverflow and spend time reading this list’s archives for gems. Yet, after years, my understand is still fuzzy as hell. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So I am seeking anyone’s blog, github repo/wiki, or threaded social media discussion where topics such as these are discussed:<o:p></o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Using AVDictionaries: discovering available options and their parameters<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Once a stream’s codec is known, what are good options specific to different codecs? <o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>How to achieve a minimal time to first frame when starting playback?<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>How to maintain minimal latency during playback? <o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>About a week ago a Jasper Taxbol asked this list about anyone having knowledge about retaining information from a previous stream play so a new play of that same stream can be achieved without probing the stream for (now known) information. Jasper: did you learn anything on this front? <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>In the hopes of sparking some type of discussion, I have made a Github repo with a wiki. The wiki has the last 3 versions of this LibAV based player lib’s AVDictionary setup. The goal of these code fragments are minimal time to first frame and minimal latency during playback. If you have any information to add, or your own different AVDictionary code fragments, it would be very appreciated if you could contribute to the wiki, or reply here. I’ll collect and compile them at that github wiki for others to learn as well.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><a href="https://github.com/bsenftner/Libav_notes/wiki/LibAV-Playback-initialization">https://github.com/bsenftner/Libav_notes/wiki/LibAV-Playback-initialization</a><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>-Blake Senftner<o:p></o:p></p><p class=MsoNormal>Compiling code since ’76.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>