diff options
author | Diego Biurrun <diego@biurrun.de> | 2012-04-14 15:24:57 +0200 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2012-05-07 14:31:59 +0200 |
commit | 9cef0669c4e0e98cd6b5746e6de5b0da800f7edb (patch) | |
tree | ce265b0fed27b3d643b6fa5e9a412f0f990ab089 /libavcodec/libschroedinger.h | |
parent | 8134fafe9bdda58e24a9574c251ed3a9b5809c51 (diff) | |
download | ffmpeg-9cef0669c4e0e98cd6b5746e6de5b0da800f7edb.tar.gz |
Move code shared between libdirac and libschroedinger to libschroedinger.
This also involves making some function static and changing the name
prefixes of some functions and structures.
Diffstat (limited to 'libavcodec/libschroedinger.h')
-rw-r--r-- | libavcodec/libschroedinger.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/libavcodec/libschroedinger.h b/libavcodec/libschroedinger.h index 814782111b..8d04d2cdcb 100644 --- a/libavcodec/libschroedinger.h +++ b/libavcodec/libschroedinger.h @@ -28,8 +28,78 @@ #include <schroedinger/schrobitstream.h> #include <schroedinger/schroframe.h> + #include "avcodec.h" +typedef struct { + uint16_t width; + uint16_t height; + uint16_t frame_rate_num; + uint16_t frame_rate_denom; +} SchroVideoFormatInfo; + +/** +* contains a single encoded frame returned from Dirac or Schroedinger +*/ +typedef struct FFSchroEncodedFrame { + /** encoded frame data */ + uint8_t *p_encbuf; + + /** encoded frame size */ + uint32_t size; + + /** encoded frame number. Will be used as pts */ + uint32_t frame_num; + + /** key frame flag. 1 : is key frame , 0 : in not key frame */ + uint16_t key_frame; +} FFSchroEncodedFrame; + +/** +* queue element +*/ +typedef struct FFSchroQueueElement { + /** Data to be stored in queue*/ + void *data; + /** Pointer to next element queue */ + struct FFSchroQueueElement *next; +} FFSchroQueueElement; + + +/** +* A simple queue implementation used in libschroedinger +*/ +typedef struct FFSchroQueue { + /** Pointer to head of queue */ + FFSchroQueueElement *p_head; + /** Pointer to tail of queue */ + FFSchroQueueElement *p_tail; + /** Queue size*/ + int size; +} FFSchroQueue; + +/** +* Initialise the queue +*/ +void ff_schro_queue_init(FFSchroQueue *queue); + +/** +* Add an element to the end of the queue +*/ +int ff_schro_queue_push_back(FFSchroQueue *queue, void *p_data); + +/** +* Return the first element in the queue +*/ +void *ff_schro_queue_pop(FFSchroQueue *queue); + +/** +* Free the queue resources. free_func is a function supplied by the caller to +* free any resources allocated by the caller. The data field of the queue +* element is passed to it. +*/ +void ff_schro_queue_free(FFSchroQueue *queue, void (*free_func)(void *)); + static const struct { enum PixelFormat ff_pix_fmt; SchroChromaFormat schro_pix_fmt; |