Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
xine_socket_cloexec() function.
|
|
|
|
For now, it will only work when there are no video post plugins enabled.
In case there are video post plugins enabled the changeset has no effect.
--HG--
extra : rebase_source : cfb22e2ef12ac547ea24ebf59565fe8720ab3635
|
|
This is necessary as VDR expects its OSD flush call to return as quickly
as possible. Hence, we can nolonger wait until all changes have appeared
on screen. As a result, a following OSD change might be written to the
ARGB buffer while the buffer is currently transferred to screen, causing
visible distortions.
--HG--
extra : rebase_source : 19c4d5a1c73b5791e66f276d57fe62497d00fb7b
|
|
--HG--
extra : rebase_source : ce0547448abc3011feea54401c3e46702fbe6f11
|
|
The current implementation chooses 4:3 when aspect is within
+/- 0.0075 % of 4:3. Otherwise 16:9 is chosen. But there are
some H.264 channels with almost 4:3 aspect and choosing 16:9
for them is worse. So the new implementation chooses the best
match.
|
|
|
|
In trickspeed mode, input_vdr's metronom generates a discontinuity for
each video frame. These generated discontinuities could interfere with
discontinuities generated by the demuxer. As a result the metronom
deadlocked while waiting for a matching discontinuity indication.
So care must be taken to not mix internal and external discontinuities.
|
|
|
|
VDR 1.7.5 requires that STC should be near to a previously transmitted PTS
value. We cannot hold this requirement immediately after a discontinuity
as the currently displayed image's vpts time (which originated before the
discontinuity) will be transformed to STC by applying the new vpts offset
established at discontinuity.
Therefore, a queue of vpts offset pairs is created and at discontinuity
the current offset is stored there in combination with the vpts value
up to which it has to be used. When retrieving a STC value, we lookup
the offset to use from current vpts and therefore get a STC near to an
originating PTS value.
As VDR requires this quality of STC values also for its trickspeed modes,
it is nolonger possible to simply set PTS of incoming frames to 0 to
schedule them just after the previous frame. Therefore a discontinuity is
generated for each frame in trickspeed mode, which allows us to schedule
each frame immediately after the previous one while there may be gaps in
PTS values. As a result the above mentioned code will take care to provide
proper STC values even in VDR's trickspeed modes.
|
|
|
|
|
|
input_vdr's RPC thread needs to lock frontend. But frontend is also locked
during xine_open() and xine_play(). xine_play() furthermore waits up to 10
seconds for the decoder to return the first frame. So it is unlikely that
the RPC thread can lock the frontend to execute VDR's commands before VDR
sends the first frame. Finally the RPC thread gave up locking the frontend
after 5 seconds and the connect to VDR failed.
To fix this issue, the RPC commands during startup phase are now handled
by the thread which has called xine_open() as it already owns the frontend
lock.
|
|
|
|
This way one can just run xine vdr://
|
|
|
|
|
|
|
|
Cropping information is necessary for frame formats like 1920x1080
which are coded as 1920x1088, i. e. 8 lines are cropped away at the
bottom. The information whether a frame is interlaced is necessary
for proper upscaling of 4:2:0 frame formats as it must be done per
field when the frame is interlaced. Otherwise choma and luma won't
match.
Make input_vdr.c compile again due to changed xine_get_current_frame.
|
|
--HG--
extra : transplant_source : %09%A1%828%A2%19P%09%A0%D7%83%DB.%B3%D2%13%26%7D%10%DC
|
|
The new function allows us to remove pausing the stream as the image
data can now be retrieved in a single call.
--HG--
extra : transplant_source : %DE%A7%7B%C9%E93%15%AC%1E%3D%A2Ik%E4%D1%AC44w_
|
|
For various operations, VDR needs to know the current PTS. But to have VDR
work correctly, xine-lib's PTS must only be returned to vdr-xine when the
PTS is related to the current stream.
Intercepting the stream's metronom for monitoring discontinuities serves
the need to detect the point in time from which on xine-lib's PTS values
are related to the current stream.
--HG--
extra : transplant_source : %89%DEe%F0uI%CCMK%27%9E%C3%A6%EC%ACk%13Bh%02
|
|
vdr-xine used a padding packet to push out any remaining data before
input_vdr executed "clear" to drop that data. But depending on the way
how input_vdr is connected to vdr-xine it could happen that the padding
packet reached input_vdr after executing "clear" and therefore "clear"
didn't work as expected.
To fix this issue, sync points are introduced by making the padding
packets "unique" in the stream. input_vdr will now drop all data up to
the sync point packet. So even if the padding packet arrives later than
the "clear" command, only data following the sync point will be fed to
the demuxer.
--HG--
extra : transplant_source : %A1%5E%8C%E1vmW%98D%1EW%A7%AF%B4V%5D%84%26%D0%DA
|
|
--HG--
extra : transplant_source : %FFP%FFI%1EgE%7F%15%AAwQt%AD%08%FB6aO%19
|
|
and const char ** are not compatible.
|
|
|
|
Several files were renamed for consistency.
--HG--
rename : include/xine/input_vdr.h => include/xine/vdr.h
rename : src/vdr/post_vdr.c => src/vdr/combined_vdr.c
rename : src/vdr/post_vdr.h => src/vdr/combined_vdr.h
|
|
|
|
Recent repository changes broke installation of input_vdr.h.
--HG--
rename : src/vdr/input_vdr.h => include/xine/input_vdr.h
|
|
|
|
|
|
called free().
|
|
This way the gettext code for description does not need to be repeated by every plugin.
|
|
where missing, for i18n.
|
|
|
|
|
|
|
|
In H.264 there are a couple of aspect ratios which can be thought
of as beeing 16:9. The easiest way is to consider all non 4:3 ratios
as beeing 16:9 and apply the zoom factors for 16:9 to such frames.
Reporting buffer usage is intended to detect replay issues on slow
machines.
|
|
|
|
|
|
Do MRL unescaping.
For FIFOs, require vdr:///path/to/fifo (i.e. three or more leading slashes).
For host[:port], truncate the MRL at the first "#" (prior to unescaping).
|
|
|
|
|
|
|
|
read() function, and declare a new buf variable in the function as needed.
|
|
|
|
|