File: schrodecoder.xml

package info (click to toggle)
schroedinger 1.0.11-2.1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 8,480 kB
  • ctags: 6,139
  • sloc: ansic: 97,380; sh: 11,238; xml: 6,509; makefile: 387
file content (510 lines) | stat: -rw-r--r-- 41,597 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<refentry id="schroedinger-schrodecoder">
<refmeta>
<refentrytitle role="top_of_page" id="schroedinger-schrodecoder.top_of_page">schrodecoder</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>
  SCHROEDINGER Library
</refmiscinfo>
</refmeta>
<refnamediv>
<refname>schrodecoder</refname>
<refpurpose></refpurpose>
</refnamediv>

<refsynopsisdiv id="schroedinger-schrodecoder.synopsis" role="synopsis">
<title role="synopsis.title">Synopsis</title>

<synopsis>struct              <link linkend="SchroDecoder">SchroDecoder</link>;
<link linkend="SchroDecoder"><returnvalue>SchroDecoder</returnvalue></link> *      <link linkend="schro-decoder-new">schro_decoder_new</link>                   (<parameter><type>void</type></parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-free">schro_decoder_free</link>                  (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-reset">schro_decoder_reset</link>                 (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);
<link linkend="SchroVideoFormat"><returnvalue>SchroVideoFormat</returnvalue></link> *  <link linkend="schro-decoder-get-video-format">schro_decoder_get_video_format</link>      (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-add-output-picture">schro_decoder_add_output_picture</link>    (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>,
                                                         <parameter><link linkend="SchroFrame"><type>SchroFrame</type></link> *frame</parameter>);
<link linkend="int"><returnvalue>int</returnvalue></link>                 <link linkend="schro-decoder-push-ready">schro_decoder_push_ready</link>            (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);
<link linkend="int"><returnvalue>int</returnvalue></link>                 <link linkend="schro-decoder-push">schro_decoder_push</link>                  (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>,
                                                         <parameter><link linkend="SchroBuffer"><type>SchroBuffer</type></link> *buffer</parameter>);
<link linkend="int"><returnvalue>int</returnvalue></link>                 <link linkend="schro-decoder-push-end-of-stream">schro_decoder_push_end_of_stream</link>    (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);
<link linkend="SchroFrame"><returnvalue>SchroFrame</returnvalue></link> *        <link linkend="schro-decoder-pull">schro_decoder_pull</link>                  (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);
<link linkend="int"><returnvalue>int</returnvalue></link>                 <link linkend="schro-decoder-wait">schro_decoder_wait</link>                  (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-set-earliest-frame">schro_decoder_set_earliest_frame</link>    (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>,
                                                         <parameter><link linkend="SchroPictureNumber"><type>SchroPictureNumber</type></link> earliest_frame</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-set-skip-ratio">schro_decoder_set_skip_ratio</link>        (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>,
                                                         <parameter><link linkend="double"><type>double</type></link> ratio</parameter>);
<link linkend="SchroPictureNumber"><returnvalue>SchroPictureNumber</returnvalue></link>  <link linkend="schro-decoder-get-picture-number">schro_decoder_get_picture_number</link>    (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);

<link linkend="int"><returnvalue>int</returnvalue></link>                 <link linkend="schro-decoder-decode-parse-header">schro_decoder_decode_parse_header</link>   (<parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-decode-transform-data">schro_decoder_decode_transform_data</link> (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-decode-lowdelay-transform-data">schro_decoder_decode_lowdelay_transform_data</link>
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-subband-dc-predict">schro_decoder_subband_dc_predict</link>    (<parameter><link linkend="SchroFrameData"><type>SchroFrameData</type></link> *fd</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-decode-block-data">schro_decoder_decode_block_data</link>     (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-decode-macroblock">schro_decoder_decode_macroblock</link>     (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroArith"><type>SchroArith</type></link> **arith</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> i</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> j</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-decode-prediction-unit">schro_decoder_decode_prediction_unit</link>
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroArith"><type>SchroArith</type></link> **arith</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>,
                                                         <parameter><link linkend="SchroMotionVector"><type>SchroMotionVector</type></link> *motion_vectors</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> x</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> y</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-init-subband-frame-data-interleaved">schro_decoder_init_subband_frame_data_interleaved</link>
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);
<link linkend="int"><returnvalue>int</returnvalue></link>                 <link linkend="schro-decoder-iterate-picture">schro_decoder_iterate_picture</link>       (<parameter><link linkend="SchroDecoderInstance"><type>SchroDecoderInstance</type></link> *instance</parameter>,
                                                         <parameter><link linkend="SchroBuffer"><type>SchroBuffer</type></link> *buffer</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> parse_code</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-parse-block-data">schro_decoder_parse_block_data</link>      (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-parse-lowdelay-transform-data">schro_decoder_parse_lowdelay_transform_data</link>
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-parse-picture">schro_decoder_parse_picture</link>         (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-parse-picture-header">schro_decoder_parse_picture_header</link>  (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-parse-picture-prediction-parameters">schro_decoder_parse_picture_prediction_parameters</link>
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-parse-transform-data">schro_decoder_parse_transform_data</link>  (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-decoder-parse-transform-parameters">schro_decoder_parse_transform_parameters</link>
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);
struct              <link linkend="SchroPicture">SchroPicture</link>;
<link linkend="SchroPicture"><returnvalue>SchroPicture</returnvalue></link> *      <link linkend="schro-picture-new">schro_picture_new</link>                   (<parameter><link linkend="SchroDecoderInstance"><type>SchroDecoderInstance</type></link> *instance</parameter>);
<link linkend="SchroPicture"><returnvalue>SchroPicture</returnvalue></link> *      <link linkend="schro-picture-ref">schro_picture_ref</link>                   (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);
<link linkend="void"><returnvalue>void</returnvalue></link>                <link linkend="schro-picture-unref">schro_picture_unref</link>                 (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);
</synopsis>
</refsynopsisdiv>

<refsect1 id="schroedinger-schrodecoder.description" role="desc">
<title role="desc.title">Description</title>
<para>
</para>
</refsect1>
<refsect1 id="schroedinger-schrodecoder.details" role="details">
<title role="details.title">Details</title>
<refsect2 id="SchroDecoder" role="struct">
<title>struct SchroDecoder</title>
<indexterm zone="SchroDecoder"><primary>SchroDecoder</primary></indexterm>
<programlisting>struct SchroDecoder {
};
</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-new" role="function">
<title>schro_decoder_new ()</title>
<indexterm zone="schro-decoder-new"><primary>schro_decoder_new</primary></indexterm>
<programlisting><link linkend="SchroDecoder"><returnvalue>SchroDecoder</returnvalue></link> *      schro_decoder_new                   (<parameter><type>void</type></parameter>);</programlisting>
<para>
Creates a new decoder object.  The decoder object should be freed
using <parameter><link linkend="schro-decoder-free"><function>schro_decoder_free()</function></link></parameter> when it is no longer needed.
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>a new decoder object</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-decoder-free" role="function">
<title>schro_decoder_free ()</title>
<indexterm zone="schro-decoder-free"><primary>schro_decoder_free</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_free                  (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);</programlisting>
<para>
Frees a decoder object.
</para><variablelist role="params">
<varlistentry><term><parameter>decoder</parameter>&#160;:</term>
<listitem><simpara>decoder object</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-decoder-reset" role="function">
<title>schro_decoder_reset ()</title>
<indexterm zone="schro-decoder-reset"><primary>schro_decoder_reset</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_reset                 (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);</programlisting>
<para>
Resets the internal state of the decoder.  This function should be
called after a discontinuity of the stream, for example, as the
result of a seek.
</para><variablelist role="params">
<varlistentry><term><parameter>decoder</parameter>&#160;:</term>
<listitem><simpara>a decoder object</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-decoder-get-video-format" role="function">
<title>schro_decoder_get_video_format ()</title>
<indexterm zone="schro-decoder-get-video-format"><primary>schro_decoder_get_video_format</primary></indexterm>
<programlisting><link linkend="SchroVideoFormat"><returnvalue>SchroVideoFormat</returnvalue></link> *  schro_decoder_get_video_format      (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);</programlisting>
<para>
Returns a structure containing information on the video format being
decoded by the decoder.  This structure should be freed using <link linkend="free"><function>free()</function></link>
when it is no longer needed.
</para><variablelist role="params">
<varlistentry><term><parameter>decoder</parameter>&#160;:</term>
<listitem><simpara>a decoder object</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>a video format structure</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-decoder-add-output-picture" role="function">
<title>schro_decoder_add_output_picture ()</title>
<indexterm zone="schro-decoder-add-output-picture"><primary>schro_decoder_add_output_picture</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_add_output_picture    (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>,
                                                         <parameter><link linkend="SchroFrame"><type>SchroFrame</type></link> *frame</parameter>);</programlisting>
<para>
Adds a frame provided by the application to the picture queue.
Frames in the picture queue will be used for decoding images, and
are eventually returned to the application by <link linkend="schro-decoder-pull"><function>schro_decoder_pull()</function></link>.
</para>
<para>
The caller loses its reference to <parameter>frame</parameter> after calling this
function.
</para><variablelist role="params">
<varlistentry><term><parameter>decoder</parameter>&#160;:</term>
<listitem><simpara>a decoder object</simpara></listitem></varlistentry>
<varlistentry><term><parameter>frame</parameter>&#160;:</term>
<listitem><simpara>the frame to add to the picture queue</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-decoder-push-ready" role="function">
<title>schro_decoder_push_ready ()</title>
<indexterm zone="schro-decoder-push-ready"><primary>schro_decoder_push_ready</primary></indexterm>
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link>                 schro_decoder_push_ready            (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);</programlisting>
<para>
This function is used by the application to determine if it should push
more data to the decoder.
</para><variablelist role="params">
<varlistentry><term><parameter>decoder</parameter>&#160;:</term>
<listitem><simpara>a decoder object</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>TRUE if the decoder is ready for more data</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-decoder-push" role="function">
<title>schro_decoder_push ()</title>
<indexterm zone="schro-decoder-push"><primary>schro_decoder_push</primary></indexterm>
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link>                 schro_decoder_push                  (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>,
                                                         <parameter><link linkend="SchroBuffer"><type>SchroBuffer</type></link> *buffer</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-push-end-of-stream" role="function">
<title>schro_decoder_push_end_of_stream ()</title>
<indexterm zone="schro-decoder-push-end-of-stream"><primary>schro_decoder_push_end_of_stream</primary></indexterm>
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link>                 schro_decoder_push_end_of_stream    (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-pull" role="function">
<title>schro_decoder_pull ()</title>
<indexterm zone="schro-decoder-pull"><primary>schro_decoder_pull</primary></indexterm>
<programlisting><link linkend="SchroFrame"><returnvalue>SchroFrame</returnvalue></link> *        schro_decoder_pull                  (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);</programlisting>
<para>
Removes the next picture from the picture queue and returns a frame
containing the image.
</para>
<para>
The application provides the frames that pictures are decoded into,
and the same frames are returned from this function.  However, the
order of frames returned may be different than the order that the
application provides the frames to the decoder.
</para>
<para>
An exception to this is that skipped frames are indicated by a
frame having a height and width equal to 0.  This frame is created
using <parameter><link linkend="schro-frame-new"><function>schro_frame_new()</function></link></parameter>, and is not one of the frames provided by
the application.
</para>
<para>
Frames should be freed using <parameter><link linkend="schro-frame-unref"><function>schro_frame_unref()</function></link></parameter> when no longer
needed.  The frame must not be reused by the application, since it
may contain a reference frame still in use by the decoder.
</para><variablelist role="params">
<varlistentry><term><parameter>decoder</parameter>&#160;:</term>
<listitem><simpara>a decoder object</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>the next picture</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-decoder-wait" role="function">
<title>schro_decoder_wait ()</title>
<indexterm zone="schro-decoder-wait"><primary>schro_decoder_wait</primary></indexterm>
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link>                 schro_decoder_wait                  (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);</programlisting>
<para>
Waits until the decoder requires the application to do something,
e.g., push more data or remove a frame from the picture queue,
and then returns the decoder status.
</para><variablelist role="params">
<varlistentry><term><parameter>decoder</parameter>&#160;:</term>
<listitem><simpara>a decoder object</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>decoder status</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-decoder-set-earliest-frame" role="function">
<title>schro_decoder_set_earliest_frame ()</title>
<indexterm zone="schro-decoder-set-earliest-frame"><primary>schro_decoder_set_earliest_frame</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_set_earliest_frame    (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>,
                                                         <parameter><link linkend="SchroPictureNumber"><type>SchroPictureNumber</type></link> earliest_frame</parameter>);</programlisting>
<para>
The application can tell the decoder the earliest frame it is
interested in by calling this function.  Subsequent calls to
<link linkend="schro-decoder-pull"><function>schro_decoder_pull()</function></link> will only return pictures with picture
numbers greater than or equal to this number.  The decoder will
avoid decoding pictures that will not be displayed or used as
reference pictures.
</para>
<para>
This feature can be used for frame-accurate seeking.
</para>
<para>
This function can be called at any time during decoding.  Calling
this function with a picture number less than the current earliest
frame setting is invalid.
</para><variablelist role="params">
<varlistentry><term><parameter>decoder</parameter>&#160;:</term>
<listitem><simpara>a decoder object</simpara></listitem></varlistentry>
<varlistentry><term><parameter>earliest_frame</parameter>&#160;:</term>
<listitem><simpara>the earliest frame that the application is interested in</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-decoder-set-skip-ratio" role="function">
<title>schro_decoder_set_skip_ratio ()</title>
<indexterm zone="schro-decoder-set-skip-ratio"><primary>schro_decoder_set_skip_ratio</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_set_skip_ratio        (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>,
                                                         <parameter><link linkend="double"><type>double</type></link> ratio</parameter>);</programlisting>
<para>
Sets the skip ratio of the decoder.  The skip ratio is used by the
decoder to skip decoding of some pictures.  Reference pictures are
always decoded.
</para>
<para>
A picture is skipped when the running average of the proportion of
pictures skipped is less than the skip ratio.  Reference frames are
always decoded and contribute to the running average.  Thus, the
actual ratio of skipped pictures may be larger than the requested
skip ratio.
</para>
<para>
The decoder indicates a skipped picture in the pictures returned
by <parameter><link linkend="schro-decoder-pull"><function>schro_decoder_pull()</function></link></parameter> by a frame that has a width and height of
0.
</para>
<para>
The default skip ratio is 1.0, indicating that all pictures should
be decoded.  A skip ratio of 0.0 indicates that no pictures should
be decoded, although as mentioned above, some pictures will be
decoded anyway.  Values outside the range of 0.0 to 1.0 are quietly
clamped to that range.
</para>
<para>
This function may be called at any time during decoding.
</para><variablelist role="params">
<varlistentry><term><parameter>decoder</parameter>&#160;:</term>
<listitem><simpara>a decoder object</simpara></listitem></varlistentry>
<varlistentry><term><parameter>ratio</parameter>&#160;:</term>
<listitem><simpara>skip ratio.</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-decoder-get-picture-number" role="function">
<title>schro_decoder_get_picture_number ()</title>
<indexterm zone="schro-decoder-get-picture-number"><primary>schro_decoder_get_picture_number</primary></indexterm>
<programlisting><link linkend="SchroPictureNumber"><returnvalue>SchroPictureNumber</returnvalue></link>  schro_decoder_get_picture_number    (<parameter><link linkend="SchroDecoder"><type>SchroDecoder</type></link> *decoder</parameter>);</programlisting>
<para>
Returns the picture number of the next picture that will be returned
by <parameter><link linkend="schro-decoder-pull"><function>schro_decoder_pull()</function></link></parameter>.
</para><variablelist role="params">
<varlistentry><term><parameter>decoder</parameter>&#160;:</term>
<listitem><simpara>a decoder object</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>a picture number</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-decoder-decode-parse-header" role="function">
<title>schro_decoder_decode_parse_header ()</title>
<indexterm zone="schro-decoder-decode-parse-header"><primary>schro_decoder_decode_parse_header</primary></indexterm>
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link>                 schro_decoder_decode_parse_header   (<parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-decode-transform-data" role="function">
<title>schro_decoder_decode_transform_data ()</title>
<indexterm zone="schro-decoder-decode-transform-data"><primary>schro_decoder_decode_transform_data</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_decode_transform_data (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-decode-lowdelay-transform-data" role="function">
<title>schro_decoder_decode_lowdelay_transform_data ()</title>
<indexterm zone="schro-decoder-decode-lowdelay-transform-data"><primary>schro_decoder_decode_lowdelay_transform_data</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_decode_lowdelay_transform_data
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-subband-dc-predict" role="function">
<title>schro_decoder_subband_dc_predict ()</title>
<indexterm zone="schro-decoder-subband-dc-predict"><primary>schro_decoder_subband_dc_predict</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_subband_dc_predict    (<parameter><link linkend="SchroFrameData"><type>SchroFrameData</type></link> *fd</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-decode-block-data" role="function">
<title>schro_decoder_decode_block_data ()</title>
<indexterm zone="schro-decoder-decode-block-data"><primary>schro_decoder_decode_block_data</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_decode_block_data     (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-decode-macroblock" role="function">
<title>schro_decoder_decode_macroblock ()</title>
<indexterm zone="schro-decoder-decode-macroblock"><primary>schro_decoder_decode_macroblock</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_decode_macroblock     (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroArith"><type>SchroArith</type></link> **arith</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> i</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> j</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-decode-prediction-unit" role="function">
<title>schro_decoder_decode_prediction_unit ()</title>
<indexterm zone="schro-decoder-decode-prediction-unit"><primary>schro_decoder_decode_prediction_unit</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_decode_prediction_unit
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroArith"><type>SchroArith</type></link> **arith</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>,
                                                         <parameter><link linkend="SchroMotionVector"><type>SchroMotionVector</type></link> *motion_vectors</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> x</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> y</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-init-subband-frame-data-interleaved" role="function">
<title>schro_decoder_init_subband_frame_data_interleaved ()</title>
<indexterm zone="schro-decoder-init-subband-frame-data-interleaved"><primary>schro_decoder_init_subband_frame_data_interleaved</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_init_subband_frame_data_interleaved
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-iterate-picture" role="function">
<title>schro_decoder_iterate_picture ()</title>
<indexterm zone="schro-decoder-iterate-picture"><primary>schro_decoder_iterate_picture</primary></indexterm>
<programlisting><link linkend="int"><returnvalue>int</returnvalue></link>                 schro_decoder_iterate_picture       (<parameter><link linkend="SchroDecoderInstance"><type>SchroDecoderInstance</type></link> *instance</parameter>,
                                                         <parameter><link linkend="SchroBuffer"><type>SchroBuffer</type></link> *buffer</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>,
                                                         <parameter><link linkend="int"><type>int</type></link> parse_code</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-parse-block-data" role="function">
<title>schro_decoder_parse_block_data ()</title>
<indexterm zone="schro-decoder-parse-block-data"><primary>schro_decoder_parse_block_data</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_parse_block_data      (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-parse-lowdelay-transform-data" role="function">
<title>schro_decoder_parse_lowdelay_transform_data ()</title>
<indexterm zone="schro-decoder-parse-lowdelay-transform-data"><primary>schro_decoder_parse_lowdelay_transform_data</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_parse_lowdelay_transform_data
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-parse-picture" role="function">
<title>schro_decoder_parse_picture ()</title>
<indexterm zone="schro-decoder-parse-picture"><primary>schro_decoder_parse_picture</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_parse_picture         (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-parse-picture-header" role="function">
<title>schro_decoder_parse_picture_header ()</title>
<indexterm zone="schro-decoder-parse-picture-header"><primary>schro_decoder_parse_picture_header</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_parse_picture_header  (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-parse-picture-prediction-parameters" role="function">
<title>schro_decoder_parse_picture_prediction_parameters ()</title>
<indexterm zone="schro-decoder-parse-picture-prediction-parameters"><primary>schro_decoder_parse_picture_prediction_parameters</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_parse_picture_prediction_parameters
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-parse-transform-data" role="function">
<title>schro_decoder_parse_transform_data ()</title>
<indexterm zone="schro-decoder-parse-transform-data"><primary>schro_decoder_parse_transform_data</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_parse_transform_data  (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-decoder-parse-transform-parameters" role="function">
<title>schro_decoder_parse_transform_parameters ()</title>
<indexterm zone="schro-decoder-parse-transform-parameters"><primary>schro_decoder_parse_transform_parameters</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_decoder_parse_transform_parameters
                                                        (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>,
                                                         <parameter><link linkend="SchroUnpack"><type>SchroUnpack</type></link> *unpack</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="SchroPicture" role="struct">
<title>struct SchroPicture</title>
<indexterm zone="SchroPicture"><primary>SchroPicture</primary></indexterm>
<programlisting>struct SchroPicture {
  int refcount;

  SchroDecoderInstance *decoder_instance;

  int busy;
  int skip;
  int error;

  SchroBuffer *input_buffer;
  SchroParams params;
  SchroPictureNumber picture_number;
  SchroPictureNumber reference1;
  SchroPictureNumber reference2;
  SchroPictureNumber retired_picture_number;
  SchroPicture *ref0;
  SchroPicture *ref1;
  SchroFrame *planar_output_frame;
  SchroFrame *ref_output_frame;

  SchroAsyncStage stages[9];

  int is_ref;

  int zero_residual;

  SchroFrame *transform_frame;
  SchroFrame *frame;
  SchroFrame *mc_tmp_frame;
  SchroMotion *motion;
  SchroFrame *output_picture;
  SchroUpsampledFrame *upsampled_frame;

  int subband_length[3][SCHRO_LIMIT_SUBBANDS];
  int subband_quant_index[3][SCHRO_LIMIT_SUBBANDS];
  SchroBuffer *subband_buffer[3][SCHRO_LIMIT_SUBBANDS];
  SchroFrameData subband_data[3][SCHRO_LIMIT_SUBBANDS];

  SchroBuffer *motion_buffers[9];

  SchroBuffer *lowdelay_buffer;

  int has_md5;
  uint8_t md5_checksum[32];

  /* private data that is associated with this picture */
  SchroTag *tag;
};
</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-picture-new" role="function">
<title>schro_picture_new ()</title>
<indexterm zone="schro-picture-new"><primary>schro_picture_new</primary></indexterm>
<programlisting><link linkend="SchroPicture"><returnvalue>SchroPicture</returnvalue></link> *      schro_picture_new                   (<parameter><link linkend="SchroDecoderInstance"><type>SchroDecoderInstance</type></link> *instance</parameter>);</programlisting>
<para>
Creates a new picture for <parameter>decoder</parameter>.
</para>
<para>
Internal API.
</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&#160;:</term><listitem><simpara>a new picture</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2 id="schro-picture-ref" role="function">
<title>schro_picture_ref ()</title>
<indexterm zone="schro-picture-ref"><primary>schro_picture_ref</primary></indexterm>
<programlisting><link linkend="SchroPicture"><returnvalue>SchroPicture</returnvalue></link> *      schro_picture_ref                   (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);</programlisting>
<para>
</para></refsect2>
<refsect2 id="schro-picture-unref" role="function">
<title>schro_picture_unref ()</title>
<indexterm zone="schro-picture-unref"><primary>schro_picture_unref</primary></indexterm>
<programlisting><link linkend="void"><returnvalue>void</returnvalue></link>                schro_picture_unref                 (<parameter><link linkend="SchroPicture"><type>SchroPicture</type></link> *picture</parameter>);</programlisting>
<para>
</para></refsect2>

</refsect1>

</refentry>