Age | Commit message (Collapse) | Author |
|
the middle of PMT packets.
Parsing PAT resets PMT buffer. If PMT does not fit to single TS packet and
PAT packet is scheduled in middle of PMT packets, PMT is never parsed and TS
demuxer falls to PID auto detection mode.
This moves PMT buffer reset to the case where PMT PID changes and all PIDs
are reset. [As far as I can see, worst regression can be invalid PMT
sections when stream changes, new PMT pid equals to old one and demuxer is
not reset(?), but this should be OK as PMT checksums are always checked.]
|
|
|
|
|
|
|
|
|
|
There are two tricks to make VC1 decoding work:
1) VC1 sequence and entry point headers must be present in context->extradata.
2) video width and height must be known when opening decoder.
Some container formats store required extra data, but mpeg-ts does not.
1) is fixed by scanning the stream for headers and discarding all data until
proper headers are found.
2) is fixed by re-opening decoder with width and height information from
first open.
|
|
|
|
|
|
Splitted decode_presentation_segment()
- Store presentation segments in decoder instance data.
- Try to update overlays after every decoded object.
|
|
|
|
|
|
|
|
show_overlay().
|
|
|
|
|
|
|
|
|
|
MSVC complained about a memset to a const object and all "long long"
variables that are GNU only. I fixed it by grouping the fields into a
structure and now even GCC is more happy.
|
|
|
|
The deadlock was caused by the unprotected use of
stream->demux_action_pending internal variable from play_internal() and from
within the demuxer loop.
Direct access to demux_action_pending is replaced with _x_action_raise() and
_x_action_lower(), which use a mutex for thread safety.
|
|
This fixes a segfault which may occur when playing an MPEG4 stream.
|
|
|
|
|
|
If a decoded_pic was locally cached, because it is the first half of a reference picture it would not get freed in case of a reset/flush/dispose.
|
|
In case of an empty nal_buffer the free method would run into a NULL pointer. Check for this.
|
|
--HG--
rename : src/combined/decoder_wavpack.c => src/combined/wavpack_decoder.c
rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c
|
|
When the parser was reset it did not forget about the last pts, which might cause metronom to freeze.
On flush the cached vo_frame_t was kept in case the previously decode produced a 1st field and the decoder was waiting for 2nd field now. As on flush all images are released after drawing this could point to a invalid vo_frame_t
|
|
|
|
some minor cleanups
|
|
|
|
This is probably still wrong, but at least works properly with BBC subtitling.
|
|
|
|
Decoding fixed (nybble extraction was broken, and some filling was wrong).
Default colour tables added.
The following is untested:
* Support for 2-bit and 8-bit images.
* Support for expansion from 2→4, 2→8 and 4→8 bits.
* Support for expansion tables.
* Handling of stuffing chunks (not expected to be seen).
* Copying of the top field into the bottom field.
|
|
|
|
|
|
This reduces requirements of plugins etc., hopefully where possible and without
breakage. (Works on Linux.)
|
|
|
|
|
|
Plasma TV users have the problem that black border pixels age differently
compared to active image pixel in the center of the screen. Changing the
background color for example to gray makes the border pixels age almost
equally like the image pixels. As a result image brightness will change
more equally over TV's lifetime.
|
|
Without resetting the buffered PTS it happens that the same PTS gets
attached to multiple images which is wrong.
|
|
|
|
|
|
|
|
|
|
--HG--
rename : src/combined/decoder_flac.c => src/combined/flac_decoder.c
|
|
|
|
Do not discard the parser, but reset fields that won't be valid after a decoder reset (ie seek) anymore
|
|
|
|
|
|
|