summaryrefslogtreecommitdiff
path: root/libavcodec/libschroedinger.h
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2012-04-14 15:24:57 +0200
committerDiego Biurrun <diego@biurrun.de>2012-05-07 14:31:59 +0200
commit9cef0669c4e0e98cd6b5746e6de5b0da800f7edb (patch)
treece265b0fed27b3d643b6fa5e9a412f0f990ab089 /libavcodec/libschroedinger.h
parent8134fafe9bdda58e24a9574c251ed3a9b5809c51 (diff)
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.h70
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;