Martin Storsjö [Tue, 26 Feb 2013 10:52:32 +0000 (12:52 +0200)]
omxil: Ignore all "secure"/DRM codecs
We can't use any of them since they don't output plain YUV data
but require using direct rendering.
This simplifies the condition and possibly also catches other cases
where it would be needed.
The case where it was added was for a device where the codec ending
with .secure was listed before the normal one. This kind of codec
is available on many other devices as well, but they're normally listed
only after the normal ones so we never pick them.
Martin Storsjö [Mon, 25 Feb 2013 20:32:46 +0000 (22:32 +0200)]
omxil: Ignore a codec that we know we don't work well with
This still keeps the mapping for VC1 and WMV3 that works fine on
e.g. Samsung Galaxy S3, without negatively affecting other devices
that expose decoders with this role but that we don't work well
with.
ts: correct Traditional Chinese EPG encoding (fixes #8235)
ETSI EN 300 468 § A.2 assigns the first byte 0x14 value to the
"Big5 subset of ISO/IEC 10646". This really means that the character
set is Big5, but the encoding is ISO/IEC 10646, a.k.a. Unicode.
Martin Storsjö [Sun, 17 Feb 2013 19:10:02 +0000 (21:10 +0200)]
omxil: Set an AMR band mode based on the AMR variant
This requires passing the original VLC codec id to the function,
since both variants are mapped to OMX_AUDIO_CodingAMR.
We don't set the actual correct band mode (since we don't know
what bitrate mode is used for each frame, since it can vary), but
we set mode 0. We could in principle set it more accurately based
on bitrate, but since it can vary from frame to frame, this should
be enough anyway.
This is required for OMX.SEC.amr.dec, which is one single codec
supporting both AMR variant roles, and this seems to be the way of
signalling what AMR variant it is. If setting
OMX_AUDIO_AMRBandModeUnused, the codec fails to initialize.
A codec can get this info either by having two separate OMX codecs,
such as OMX.google.amrnb.decoder vs OMX.google.amrwb.decoder, by
checking what the caller set via OMX_IndexParamStandardComponentRole
or via the band mode parameter - the samsung decoder seems to use
the band mode.
Martin Storsjö [Sun, 17 Feb 2013 18:40:41 +0000 (20:40 +0200)]
omxil: Signal the right AMR frame format
The previously used enum is only used for conformance tests and
is not the one commonly used in practice - the file storage format
is the commonly used one (which also is used within Android).
Rafaël Carré [Fri, 15 Feb 2013 15:15:08 +0000 (16:15 +0100)]
opensles: use 10ms buffers
This rounds up to exactly 441 samples with 44.1kHz audio
This avoids a rounding error in drift calculation of 2.31 milliseconds
in the worst case of the buffers queue being full for the specific
case of 44.1kHz audio (such a small error is not significative).
For unknown reasons it also fixes A/V sync issues.
David Fuhrmann [Fri, 15 Feb 2013 18:12:21 +0000 (19:12 +0100)]
macosx: only revert presentation options on fullscreen leave which are touched when entering fs for this particular window
This fixes menu / dock hide behaviour when handling around with multiple
vout windows which are set to fullscreen on multiple monitors, especially when
leaving fullscreen for one window with other windows still in fullscreen state.
Martin Storsjö [Tue, 12 Feb 2013 09:37:33 +0000 (11:37 +0200)]
omxil: Use vlc_cond_timedwait when waiting for free input buffers
The structure of the decode functions are like this:
Decode() {
if (got output buffer) {
consume output buffer;
}
wait for input buffer;
if (got input buffer) {
fill input buffer and send to the codec;
}
}
This makes the functions prone to deadlock, if all input buffers
have been consumed and won't be returned by the codec until we
consume some of the output buffers (and we don't get the output
buffers until we already are waiting for an input buffer).
By using a timeout in the wait for input buffers, we get out of the
deadlock and can consume an output buffer, allowing the codec to
proceed. By making the timeout relatively large, it won't trigger
during normal decoding, but gets us out of possible deadlocks
(noticed at startup with qualcomm audio decoders).
The alternative to timeouts would be to push dummy/sentinel buffers
into the fifo (as we already do at reconfiguration) each time we
receive an output buffer. This would add quite a bit of overhead
though, having to process (and skip) one item in the input buffer
fifo for each received output buffer.