2
* Copyright (c) 2008 BBC, Anuradha Suraparaju <asuraparaju at gmail dot com >
4
* This file is part of FFmpeg.
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
* @file libdirac_libschro.h
23
* data structures common to libdirac and libschroedinger
26
#ifndef FFMPEG_LIBDIRAC_LIBSCHRO_H
27
#define FFMPEG_LIBDIRAC_LIBSCHRO_H
35
uint16_t frame_rate_num;
36
uint16_t frame_rate_denom;
37
} FfmpegDiracSchroVideoFormatInfo;
40
* Returns the index into the Dirac Schro common video format info table
42
unsigned int ff_dirac_schro_get_video_format_idx (AVCodecContext *avccontext);
45
* contains a single encoded frame returned from Dirac or Schroedinger
47
typedef struct FfmpegDiracSchroEncodedFrame
49
/** encoded frame data */
52
/** encoded frame size */
55
/** encoded frame number. Will be used as pts */
58
/** key frame flag. 1 : is key frame , 0 : in not key frame */
60
} FfmpegDiracSchroEncodedFrame;
65
typedef struct FfmpegDiracSchroQueueElement
67
/** Data to be stored in queue*/
69
/** Pointer to next element queue */
70
struct FfmpegDiracSchroQueueElement *next;
71
} FfmpegDiracSchroQueueElement;
75
* A simple queue implementation used in libdirac and libschroedinger
77
typedef struct FfmpegDiracSchroQueue
79
/** Pointer to head of queue */
80
FfmpegDiracSchroQueueElement *p_head;
81
/** Pointer to tail of queue */
82
FfmpegDiracSchroQueueElement *p_tail;
83
} FfmpegDiracSchroQueue;
86
* Initialise the queue
88
void ff_dirac_schro_queue_init(FfmpegDiracSchroQueue *queue);
91
* Add an element to the end of the queue
93
int ff_dirac_schro_queue_push_back (FfmpegDiracSchroQueue *queue, void *p_data);
96
* Return the first element in the queue
98
void *ff_dirac_schro_queue_pop (FfmpegDiracSchroQueue *queue);
101
* Free the queue resources. free_func is a function supplied by the caller to
102
* free any resources allocated by the caller. The data field of the queue
103
* element is passed to it.
105
void ff_dirac_schro_queue_free(FfmpegDiracSchroQueue *queue,
106
void (*free_func)(void *));
107
#endif /* FFMPEG_LIBDIRAC_LIBSCHRO_H */