[vlc-commits] omxil: Get the new port definition on crop rect changes
Martin Storsjö
git at videolan.org
Wed Apr 4 15:06:09 CEST 2012
vlc | branch: master | Martin Storsjö <martin at martin.st> | Wed Apr 4 15:17:59 2012 +0300| [3f95a1e74542da2f57c6232297cda8a238506594] | committer: Jean-Baptiste Kempf
omxil: Get the new port definition on crop rect changes
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3f95a1e74542da2f57c6232297cda8a238506594
---
modules/codec/omxil/omxil.c | 25 ++++++++++++++++++++++---
modules/codec/omxil/omxil.h | 1 +
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/modules/codec/omxil/omxil.c b/modules/codec/omxil/omxil.c
index 047b8ff..34509e1 100644
--- a/modules/codec/omxil/omxil.c
+++ b/modules/codec/omxil/omxil.c
@@ -1213,6 +1213,12 @@ static picture_t *DecodeVideo( decoder_t *p_dec, block_t **pp_block )
OMX_FIFO_PEEK(&p_sys->out.fifo, p_header);
if(!p_header) break; /* No frame available */
+ if(p_sys->out.b_update_def)
+ {
+ omx_error = GetPortDefinition(p_dec, &p_sys->out, p_sys->out.p_fmt);
+ p_sys->out.b_update_def = 0;
+ }
+
if(p_header->nFilledLen)
{
p_pic = p_header->pAppPrivate;
@@ -1320,9 +1326,16 @@ reconfig:
for(i = 0; i < p_sys->ports; i++)
{
OmxPort *p_port = &p_sys->p_ports[i];
- if(!p_port->b_reconfigure) continue;
- p_port->b_reconfigure = 0;
- omx_error = PortReconfigure(p_dec, p_port);
+ if(p_port->b_reconfigure)
+ {
+ omx_error = PortReconfigure(p_dec, p_port);
+ p_port->b_reconfigure = 0;
+ }
+ if(p_port->b_update_def)
+ {
+ omx_error = GetPortDefinition(p_dec, p_port, p_port->p_fmt);
+ p_port->b_update_def = 0;
+ }
}
return p_pic;
@@ -1639,6 +1652,12 @@ static OMX_ERRORTYPE OmxEventHandler( OMX_HANDLETYPE omx_handle,
p_sys->sentinel_buffer.nFlags = OMX_BUFFERFLAG_EOS;
OMX_FIFO_PUT(&p_sys->in.fifo, &p_sys->sentinel_buffer);
}
+ else if( data_2 == OMX_IndexConfigCommonOutputCrop )
+ {
+ for(i = 0; i < p_sys->ports; i++)
+ if(p_sys->p_ports[i].definition.nPortIndex == data_1)
+ p_sys->p_ports[i].b_update_def = true;
+ }
else
{
msg_Dbg( p_dec, "Unhandled setting change %x", (unsigned int)data_2 );
diff --git a/modules/codec/omxil/omxil.h b/modules/codec/omxil/omxil.h
index 1fc28f7..4fa1d60 100644
--- a/modules/codec/omxil/omxil.h
+++ b/modules/codec/omxil/omxil.h
@@ -69,6 +69,7 @@ typedef struct OmxPort
OmxFormatParam format_param;
OMX_BOOL b_reconfigure;
+ OMX_BOOL b_update_def;
OMX_BOOL b_direct;
OMX_BOOL b_flushed;
More information about the vlc-commits
mailing list