}
p_sys->b_enc = b_encode;
InitOmxEventQueue(&p_sys->event_queue);
- vlc_mutex_init (&p_sys->in.fifo.lock);
- vlc_cond_init (&p_sys->in.fifo.wait);
- p_sys->in.fifo.offset = offsetof(OMX_BUFFERHEADERTYPE, pOutputPortPrivate) / sizeof(void *);
- p_sys->in.fifo.pp_last = &p_sys->in.fifo.p_first;
+ OMX_FIFO_INIT (&p_sys->in.fifo, pOutputPortPrivate );
p_sys->in.b_direct = false;
p_sys->in.b_flushed = true;
p_sys->in.p_fmt = &p_dec->fmt_in;
- vlc_mutex_init (&p_sys->out.fifo.lock);
- vlc_cond_init (&p_sys->out.fifo.wait);
- p_sys->out.fifo.offset = offsetof(OMX_BUFFERHEADERTYPE, pInputPortPrivate) / sizeof(void *);
- p_sys->out.fifo.pp_last = &p_sys->out.fifo.p_first;
+ OMX_FIFO_INIT (&p_sys->out.fifo, pInputPortPrivate );
p_sys->out.b_direct = false;
p_sys->out.b_flushed = true;
p_sys->out.p_fmt = &p_dec->fmt_out;
DeinitOmxCore();
DeinitOmxEventQueue(&p_sys->event_queue);
- vlc_mutex_destroy (&p_sys->in.fifo.lock);
- vlc_cond_destroy (&p_sys->in.fifo.wait);
- vlc_mutex_destroy (&p_sys->out.fifo.lock);
- vlc_cond_destroy (&p_sys->out.fifo.wait);
+
+ OMX_FIFO_DESTROY( &p_sys->in.fifo );
+ OMX_FIFO_DESTROY( &p_sys->out.fifo );
free( p_sys );
}
/*****************************************************************************
* decoder_sys_t : omxil decoder descriptor
*****************************************************************************/
+typedef struct OmxFifo
+{
+ vlc_mutex_t lock;
+ vlc_cond_t wait;
+
+ OMX_BUFFERHEADERTYPE *p_first;
+ OMX_BUFFERHEADERTYPE **pp_last;
+
+ int offset;
+
+} OmxFifo;
+
typedef struct OmxPort
{
bool b_valid;
unsigned int i_buffers;
OMX_BUFFERHEADERTYPE **pp_buffers;
- struct fifo_t
- {
- vlc_mutex_t lock;
- vlc_cond_t wait;
-
- OMX_BUFFERHEADERTYPE *p_first;
- OMX_BUFFERHEADERTYPE **pp_last;
-
- int offset;
-
- } fifo;
+ OmxFifo fifo;
OmxFormatParam format_param;
/*****************************************************************************
* OMX buffer FIFO macros
*****************************************************************************/
+#define OMX_FIFO_INIT(p_fifo, next) \
+ do { vlc_mutex_init( &(p_fifo)->lock ); \
+ vlc_cond_init( &(p_fifo)->wait ); \
+ (p_fifo)->offset = offsetof(OMX_BUFFERHEADERTYPE, next) / sizeof(void *); \
+ (p_fifo)->pp_last = &(p_fifo)->p_first; } while(0)
+
+#define OMX_FIFO_DESTROY(p_fifo) \
+ do { vlc_mutex_destroy( &(p_fifo)->lock ); \
+ vlc_cond_destroy (&(p_fifo)->wait); } while(0)
+
#define OMX_FIFO_PEEK(p_fifo, p_buffer) \
p_buffer = (p_fifo)->p_first;