From 9cef0669c4e0e98cd6b5746e6de5b0da800f7edb Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Sat, 14 Apr 2012 15:24:57 +0200 Subject: 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. --- libavcodec/libschroedinger.h | 70 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) (limited to 'libavcodec/libschroedinger.h') 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 #include + #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; -- cgit v1.2.3