<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.3"/> <title>gavl: Frame table</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">gavl </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.3 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">Frame table<div class="ingroups"><a class="el" href="group__video.html">Video</a></div></div> </div> </div><!--header--> <div class="contents"> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">frame table structure <a href="structgavl__frame__table__t.html#details">More...</a><br/></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:gac265a8102f8c1cfd1a0a8e0d3cecd886"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#gac265a8102f8c1cfd1a0a8e0d3cecd886">gavl_frame_table_create</a> ()</td></tr> <tr class="memdesc:gac265a8102f8c1cfd1a0a8e0d3cecd886"><td class="mdescLeft"> </td><td class="mdescRight">Create a frame table. <a href="#gac265a8102f8c1cfd1a0a8e0d3cecd886"></a><br/></td></tr> <tr class="separator:gac265a8102f8c1cfd1a0a8e0d3cecd886"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gad45a0e09687b1f0e33266578b8858a71"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#gad45a0e09687b1f0e33266578b8858a71">gavl_frame_table_create_audio</a> (int samplerate, int64_t offset, int64_t duration, <a class="el" href="structgavl__timecode__format__t.html">gavl_timecode_format_t</a> *fmt_ret)</td></tr> <tr class="memdesc:gad45a0e09687b1f0e33266578b8858a71"><td class="mdescLeft"> </td><td class="mdescRight">Create a frame table for an audio stream. <a href="#gad45a0e09687b1f0e33266578b8858a71"></a><br/></td></tr> <tr class="separator:gad45a0e09687b1f0e33266578b8858a71"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaaa2971ad8831bc68b144ef8259d6e9ca"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#gaaa2971ad8831bc68b144ef8259d6e9ca">gavl_frame_table_create_cfr</a> (int64_t offset, int64_t frame_duration, int64_t num_frames, <a class="el" href="group__timecode.html#ga534f23baf96ee5cdabd99f1619672452">gavl_timecode_t</a> start_timecode)</td></tr> <tr class="memdesc:gaaa2971ad8831bc68b144ef8259d6e9ca"><td class="mdescLeft"> </td><td class="mdescRight">Create a frame table for constant framerate video. <a href="#gaaa2971ad8831bc68b144ef8259d6e9ca"></a><br/></td></tr> <tr class="separator:gaaa2971ad8831bc68b144ef8259d6e9ca"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga39e058c40317cf21f0573d4cc282f202"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#ga39e058c40317cf21f0573d4cc282f202">gavl_frame_table_copy</a> (const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *tab)</td></tr> <tr class="memdesc:ga39e058c40317cf21f0573d4cc282f202"><td class="mdescLeft"> </td><td class="mdescRight">Copy a frame table to another. <a href="#ga39e058c40317cf21f0573d4cc282f202"></a><br/></td></tr> <tr class="separator:ga39e058c40317cf21f0573d4cc282f202"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga7d49000351213b69385a85ab2c7d24a8"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#ga7d49000351213b69385a85ab2c7d24a8">gavl_frame_table_destroy</a> (<a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t)</td></tr> <tr class="memdesc:ga7d49000351213b69385a85ab2c7d24a8"><td class="mdescLeft"> </td><td class="mdescRight">Destroy a frame table and free all memory. <a href="#ga7d49000351213b69385a85ab2c7d24a8"></a><br/></td></tr> <tr class="separator:ga7d49000351213b69385a85ab2c7d24a8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaa3019fd2f14360c77724db64e6ea1500"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#gaa3019fd2f14360c77724db64e6ea1500">gavl_frame_table_append_entry</a> (<a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t, int64_t duration)</td></tr> <tr class="memdesc:gaa3019fd2f14360c77724db64e6ea1500"><td class="mdescLeft"> </td><td class="mdescRight">Append an entry. <a href="#gaa3019fd2f14360c77724db64e6ea1500"></a><br/></td></tr> <tr class="separator:gaa3019fd2f14360c77724db64e6ea1500"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaca3eb0d8345f72af6e4966d12744388d"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#gaca3eb0d8345f72af6e4966d12744388d">gavl_frame_table_append_timecode</a> (<a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t, int64_t pts, <a class="el" href="group__timecode.html#ga534f23baf96ee5cdabd99f1619672452">gavl_timecode_t</a> tc)</td></tr> <tr class="memdesc:gaca3eb0d8345f72af6e4966d12744388d"><td class="mdescLeft"> </td><td class="mdescRight">Append a timecodes. <a href="#gaca3eb0d8345f72af6e4966d12744388d"></a><br/></td></tr> <tr class="separator:gaca3eb0d8345f72af6e4966d12744388d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga2cf755e56e4b50f0d3cc12db088aeca6"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#ga2cf755e56e4b50f0d3cc12db088aeca6">gavl_frame_table_frame_to_time</a> (const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t, int64_t frame, int *duration)</td></tr> <tr class="memdesc:ga2cf755e56e4b50f0d3cc12db088aeca6"><td class="mdescLeft"> </td><td class="mdescRight">Convert a frame index to a timestamp. <a href="#ga2cf755e56e4b50f0d3cc12db088aeca6"></a><br/></td></tr> <tr class="separator:ga2cf755e56e4b50f0d3cc12db088aeca6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga623a74c4ff943db7f1157d845c64beb0"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#ga623a74c4ff943db7f1157d845c64beb0">gavl_frame_table_time_to_frame</a> (const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t, int64_t time, int64_t *start_time)</td></tr> <tr class="memdesc:ga623a74c4ff943db7f1157d845c64beb0"><td class="mdescLeft"> </td><td class="mdescRight">Convert a timestamp to a frame index. <a href="#ga623a74c4ff943db7f1157d845c64beb0"></a><br/></td></tr> <tr class="separator:ga623a74c4ff943db7f1157d845c64beb0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga6069fd13db8bcb703d22827517c12b22"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC <a class="el" href="group__timecode.html#ga534f23baf96ee5cdabd99f1619672452">gavl_timecode_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#ga6069fd13db8bcb703d22827517c12b22">gavl_frame_table_time_to_timecode</a> (const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t, int64_t time, int64_t *start_time, const <a class="el" href="structgavl__timecode__format__t.html">gavl_timecode_format_t</a> *fmt)</td></tr> <tr class="memdesc:ga6069fd13db8bcb703d22827517c12b22"><td class="mdescLeft"> </td><td class="mdescRight">Convert a timestamp to a timecode. <a href="#ga6069fd13db8bcb703d22827517c12b22"></a><br/></td></tr> <tr class="separator:ga6069fd13db8bcb703d22827517c12b22"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gafba6d572126c3b946c96944a9824e401"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#gafba6d572126c3b946c96944a9824e401">gavl_frame_table_timecode_to_time</a> (const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t, <a class="el" href="group__timecode.html#ga534f23baf96ee5cdabd99f1619672452">gavl_timecode_t</a> tc, const <a class="el" href="structgavl__timecode__format__t.html">gavl_timecode_format_t</a> *fmt)</td></tr> <tr class="memdesc:gafba6d572126c3b946c96944a9824e401"><td class="mdescLeft"> </td><td class="mdescRight">Convert a timecode to a timestamp. <a href="#gafba6d572126c3b946c96944a9824e401"></a><br/></td></tr> <tr class="separator:gafba6d572126c3b946c96944a9824e401"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga44b9d9c826a39027327d3347011aadb3"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC <a class="el" href="group__timecode.html#ga534f23baf96ee5cdabd99f1619672452">gavl_timecode_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#ga44b9d9c826a39027327d3347011aadb3">gavl_frame_table_frame_to_timecode</a> (const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t, int64_t frame, int64_t *start_time, const <a class="el" href="structgavl__timecode__format__t.html">gavl_timecode_format_t</a> *fmt)</td></tr> <tr class="memdesc:ga44b9d9c826a39027327d3347011aadb3"><td class="mdescLeft"> </td><td class="mdescRight">Convert a frame index to a timecode. <a href="#ga44b9d9c826a39027327d3347011aadb3"></a><br/></td></tr> <tr class="separator:ga44b9d9c826a39027327d3347011aadb3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga86b09c9a3a0537d3cbf31b33abe5beee"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#ga86b09c9a3a0537d3cbf31b33abe5beee">gavl_frame_table_num_frames</a> (const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t)</td></tr> <tr class="memdesc:ga86b09c9a3a0537d3cbf31b33abe5beee"><td class="mdescLeft"> </td><td class="mdescRight">get the total number of frames <a href="#ga86b09c9a3a0537d3cbf31b33abe5beee"></a><br/></td></tr> <tr class="separator:ga86b09c9a3a0537d3cbf31b33abe5beee"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga7bc7232a41f14c82d1af0c00cb4fe8bb"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#ga7bc7232a41f14c82d1af0c00cb4fe8bb">gavl_frame_table_duration</a> (const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t)</td></tr> <tr class="memdesc:ga7bc7232a41f14c82d1af0c00cb4fe8bb"><td class="mdescLeft"> </td><td class="mdescRight">get the total duration of all frames <a href="#ga7bc7232a41f14c82d1af0c00cb4fe8bb"></a><br/></td></tr> <tr class="separator:ga7bc7232a41f14c82d1af0c00cb4fe8bb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga190ee3adfd6f512f11ef6c1f609443a0"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#ga190ee3adfd6f512f11ef6c1f609443a0">gavl_frame_table_end_time</a> (const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t)</td></tr> <tr class="memdesc:ga190ee3adfd6f512f11ef6c1f609443a0"><td class="mdescLeft"> </td><td class="mdescRight">get the end time of the last frame <a href="#ga190ee3adfd6f512f11ef6c1f609443a0"></a><br/></td></tr> <tr class="separator:ga190ee3adfd6f512f11ef6c1f609443a0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga15211644be347e181d22929e79ca6dbe"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#ga15211644be347e181d22929e79ca6dbe">gavl_frame_table_save</a> (const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t, const char *filename)</td></tr> <tr class="memdesc:ga15211644be347e181d22929e79ca6dbe"><td class="mdescLeft"> </td><td class="mdescRight">Save a frame table to a file. <a href="#ga15211644be347e181d22929e79ca6dbe"></a><br/></td></tr> <tr class="separator:ga15211644be347e181d22929e79ca6dbe"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gab3603f0d360e636cdd502dc8420bc9da"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#gab3603f0d360e636cdd502dc8420bc9da">gavl_frame_table_load</a> (const char *filename)</td></tr> <tr class="memdesc:gab3603f0d360e636cdd502dc8420bc9da"><td class="mdescLeft"> </td><td class="mdescRight">Load a frame table from a file. <a href="#gab3603f0d360e636cdd502dc8420bc9da"></a><br/></td></tr> <tr class="separator:gab3603f0d360e636cdd502dc8420bc9da"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga593f1f9fe0089c5ce01f2fa3b6091110"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__frame__table.html#ga593f1f9fe0089c5ce01f2fa3b6091110">gavl_frame_table_dump</a> (const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> *t)</td></tr> <tr class="memdesc:ga593f1f9fe0089c5ce01f2fa3b6091110"><td class="mdescLeft"> </td><td class="mdescRight">Dump a frame table to stderr for debugging. <a href="#ga593f1f9fe0089c5ce01f2fa3b6091110"></a><br/></td></tr> <tr class="separator:ga593f1f9fe0089c5ce01f2fa3b6091110"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p>This is a table, which tolds the complete timing information of a video sequence. If is meant for e.g. for editing applications, where the complete timing must be known in advance.</p> <p>A frame table is always associated with a <a class="el" href="group__video__format.html#ga0ffc9c60fb71a5fb835e453531fd442c">gavl_video_format_t</a>, which must be passed to most functions. </p> <h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="gac265a8102f8c1cfd1a0a8e0d3cecd886"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a>* gavl_frame_table_create </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Create a frame table. </p> <dl class="section return"><dt>Returns</dt><dd>A newly allocated frame table</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="gad45a0e09687b1f0e33266578b8858a71"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a>* gavl_frame_table_create_audio </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>samplerate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>offset</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>duration</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structgavl__timecode__format__t.html">gavl_timecode_format_t</a> * </td> <td class="paramname"><em>fmt_ret</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Create a frame table for an audio stream. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">samplerate</td><td>Samplerate for this stream </td></tr> <tr><td class="paramname">offset</td><td>PTS offset of this stream in samples </td></tr> <tr><td class="paramname">duration</td><td>Sample count </td></tr> <tr><td class="paramname">fmt_ret</td><td>If non-null, returns the timecode format </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>A newly allocated frame table</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="gaaa2971ad8831bc68b144ef8259d6e9ca"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a>* gavl_frame_table_create_cfr </td> <td>(</td> <td class="paramtype">int64_t </td> <td class="paramname"><em>offset</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>frame_duration</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>num_frames</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__timecode.html#ga534f23baf96ee5cdabd99f1619672452">gavl_timecode_t</a> </td> <td class="paramname"><em>start_timecode</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Create a frame table for constant framerate video. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">offset</td><td>Timestamp of the first frame </td></tr> <tr><td class="paramname">frame_duration</td><td>Duration of each frame </td></tr> <tr><td class="paramname">num_frames</td><td>Number of frames </td></tr> <tr><td class="paramname">start_timecode</td><td>Timecode of the first frame (or GAVL_TIMECODE_UNDEFINED) </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>A newly allocated frame table</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="ga39e058c40317cf21f0573d4cc282f202"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a>* gavl_frame_table_copy </td> <td>(</td> <td class="paramtype">const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>tab</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Copy a frame table to another. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">tab</td><td>A frame table </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>A newly allocated copy</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="ga7d49000351213b69385a85ab2c7d24a8"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC void gavl_frame_table_destroy </td> <td>(</td> <td class="paramtype"><a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Destroy a frame table and free all memory. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table</td></tr> </table> </dd> </dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="gaa3019fd2f14360c77724db64e6ea1500"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC void gavl_frame_table_append_entry </td> <td>(</td> <td class="paramtype"><a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>duration</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Append an entry. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table </td></tr> <tr><td class="paramname">duration</td><td>The duration of this frame</td></tr> </table> </dd> </dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="gaca3eb0d8345f72af6e4966d12744388d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC void gavl_frame_table_append_timecode </td> <td>(</td> <td class="paramtype"><a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>pts</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__timecode.html#ga534f23baf96ee5cdabd99f1619672452">gavl_timecode_t</a> </td> <td class="paramname"><em>tc</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Append a timecodes. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table </td></tr> <tr><td class="paramname">pts</td><td>Presentation time of that frame </td></tr> <tr><td class="paramname">tc</td><td>Timecode of that frame</td></tr> </table> </dd> </dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="ga2cf755e56e4b50f0d3cc12db088aeca6"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC int64_t gavl_frame_table_frame_to_time </td> <td>(</td> <td class="paramtype">const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>frame</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int * </td> <td class="paramname"><em>duration</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Convert a frame index to a timestamp. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table </td></tr> <tr><td class="paramname">frame</td><td>Frame index (starting with zero) </td></tr> <tr><td class="paramname">duration</td><td>If non NULL, returns the duration of that frame </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The timestamp of that frame in video timescale or GAVL_TIME_UNDEFINED if such frame doesn't exist.</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="ga623a74c4ff943db7f1157d845c64beb0"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC int64_t gavl_frame_table_time_to_frame </td> <td>(</td> <td class="paramtype">const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>time</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t * </td> <td class="paramname"><em>start_time</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Convert a timestamp to a frame index. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table </td></tr> <tr><td class="paramname">time</td><td>Time in stream timescale </td></tr> <tr><td class="paramname">start_time</td><td>If non NULL, returns the start time of that frame </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The index that frame (starting with 0) or -1 if such frame doesn't exist.</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="ga6069fd13db8bcb703d22827517c12b22"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC <a class="el" href="group__timecode.html#ga534f23baf96ee5cdabd99f1619672452">gavl_timecode_t</a> gavl_frame_table_time_to_timecode </td> <td>(</td> <td class="paramtype">const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>time</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t * </td> <td class="paramname"><em>start_time</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structgavl__timecode__format__t.html">gavl_timecode_format_t</a> * </td> <td class="paramname"><em>fmt</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Convert a timestamp to a timecode. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table </td></tr> <tr><td class="paramname">time</td><td>Time in stream timescale </td></tr> <tr><td class="paramname">start_time</td><td>If non NULL, returns the start time of that frame </td></tr> <tr><td class="paramname">fmt</td><td>Timecode format </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The interpolated timecode that frame or GAVL_TIMECODE_UNDEFINED if such frame doesn't exist.</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="gafba6d572126c3b946c96944a9824e401"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC int64_t gavl_frame_table_timecode_to_time </td> <td>(</td> <td class="paramtype">const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__timecode.html#ga534f23baf96ee5cdabd99f1619672452">gavl_timecode_t</a> </td> <td class="paramname"><em>tc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structgavl__timecode__format__t.html">gavl_timecode_format_t</a> * </td> <td class="paramname"><em>fmt</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Convert a timecode to a timestamp. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table </td></tr> <tr><td class="paramname">tc</td><td>Timecode </td></tr> <tr><td class="paramname">fmt</td><td>Timecode format </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The pts corresponding to that timecode or GAVL_TIME_UNDEFINED if such frame doesn't exist.</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="ga44b9d9c826a39027327d3347011aadb3"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC <a class="el" href="group__timecode.html#ga534f23baf96ee5cdabd99f1619672452">gavl_timecode_t</a> gavl_frame_table_frame_to_timecode </td> <td>(</td> <td class="paramtype">const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t </td> <td class="paramname"><em>frame</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int64_t * </td> <td class="paramname"><em>start_time</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structgavl__timecode__format__t.html">gavl_timecode_format_t</a> * </td> <td class="paramname"><em>fmt</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Convert a frame index to a timecode. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table </td></tr> <tr><td class="paramname">frame</td><td>Frame index </td></tr> <tr><td class="paramname">start_time</td><td>If non NULL, returns the start time of that frame </td></tr> <tr><td class="paramname">fmt</td><td>Timecode format </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The interpolated timecode that frame or GAVL_TIMECODE_UNDEFINED if such frame doesn't exist.</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="ga86b09c9a3a0537d3cbf31b33abe5beee"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC int64_t gavl_frame_table_num_frames </td> <td>(</td> <td class="paramtype">const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>get the total number of frames </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The total number of frames</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="ga7bc7232a41f14c82d1af0c00cb4fe8bb"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC int64_t gavl_frame_table_duration </td> <td>(</td> <td class="paramtype">const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>get the total duration of all frames </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>Total duration</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="ga190ee3adfd6f512f11ef6c1f609443a0"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC int64_t gavl_frame_table_end_time </td> <td>(</td> <td class="paramtype">const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>get the end time of the last frame </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>End time</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="ga15211644be347e181d22929e79ca6dbe"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC int gavl_frame_table_save </td> <td>(</td> <td class="paramtype">const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>filename</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Save a frame table to a file. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>Tab frame table </td></tr> <tr><td class="paramname">filename</td><td>Filename </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1 on success, 0 on error</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="gab3603f0d360e636cdd502dc8420bc9da"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a>* gavl_frame_table_load </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>filename</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Load a frame table from a file. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">filename</td><td>Filename </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The loaded frame table or NULL if an error occurred</dd></dl> <p>Since 1.1.2. </p> </div> </div> <a class="anchor" id="ga593f1f9fe0089c5ce01f2fa3b6091110"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">GAVL_PUBLIC void gavl_frame_table_dump </td> <td>(</td> <td class="paramtype">const <a class="el" href="structgavl__frame__table__t.html">gavl_frame_table_t</a> * </td> <td class="paramname"><em>t</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Dump a frame table to stderr for debugging. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">t</td><td>A frame table</td></tr> </table> </dd> </dl> <p>Since 1.1.2. </p> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Fri Jan 11 2013 22:07:38 for gavl by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.3 </small></address> </body> </html>