Age | Commit message (Collapse) | Author |
|
|
|
This requires that many other files include config.h themselves.
Also convert <config.h> to "config.h".
|
|
All the initialisation functions returning a new object instance that
was allocated through malloc() or calloc() can get the malloc
attribute so that the compiler can optimise their call.
|
|
I watch a lot of movies with subtitles and I need "vobsub subtitles"
work in xine, then I decide to write this patch.
It may support SSA tags for all text subtiles (ssa, ass, srt, ...)
This patch :
1. Remove all SSA tags from stream (they are ugly : {\a6})
2. Handle some of them (b, i, a, an, pos). The other ones control
colours, shadow, animation, ... I can't make them work in an easy way.
3. Correct wrap algorithm which have minors bugs (we can see them only
with SSA patch...)
Modified files :
libsputext/demux_sputext.c
just remove unneeded code (which remove some of SSA-tags)
libsputext/xine_sputext_decoder.c
the main modified file.
video_out/video_out_xshm.c
video_out/video_out_xv.c
xine-engine/video_out.h
get video output (position and size). See below.
1.
Removing SSA tags is done in ogm_render_line_internal() like for
html-like tags. (this was done in the previous version of xine)
2.
b(bold) and i(italic) are implemented like html-ones, in
ogm_render_line_internal().
The other tags this patch support are :
aX : alignment in SSA-code
anX : alignment in numpad code
pos(X,Y) : position, depend on alignment
For those ones, I need in first a full-screen OSD, not a five lines one.
Then, I need to remember where the last subtitle was drawn, in order to
erase it. At last, I need a translation function to convert subtitle
coordinates in screen coordinates.
For this last point, I first write a full-screen translation (don't care
about blacks borders), but it's not really good: the 'pos' tag is
sometime used to point out something in the video. (Moreover, ASS spec
say we have to draw subtitle on the video)
For doing this, I need the real video output size and position, which
are only know by the video output driver! Then I had 4 VO properties
(in xine-engine/video_out.h) for video driver could give us those
informations.
I implement it only in xshm and xv drivers (I can't test other ones).
If video driver can't give us those informations, the patch fallback in
a full-screen translation.
3.
there was 3 problem with the wrap algorithm :
1. It was in double: exactly the same, twice. Look like a merge problem.
I remove one and all work fine.
2. It want to cut string in equivalent display length but it cut it in
equivalent byte length. In most cases, this is the same, but if we have
UTF-8 chars or long SSA-tags (which will not be displayed) the result is
strange.
3. If we have a too-long part (in bytes) of the string without spaces
(bad subtitle file or long SSA-code), the algorithm don't know what to
do. (this case is not handled)
I re-write the wrap algorithm to correct those problems. Note that my
version is slower than previous one : working with bytes is really
faster than computing text-length. Maybe I should had to propose an
other patch for this part...
|
|
--HG--
extra : transplant_source : %E0%D0%C5%8B%BEU%DD%24%5D7%1F%ADV%AD%EB%23%CBU%80%EB
|
|
For contributed code, leave whatever the version we last synced for is using
to make simpler future syncs.
|
|
- validate palette alpha values in overlay manager
(one check / overlay / palette index) instead of
checking every alpha value twice for every
blended pixel in every frame
- remove unneeded calculations
- approximiate expensive integer divisions with
multiplication and shift
|
|
that their binding is local to the library (has a similar effect to -Bsymbolic, but will work better with hidden visibility enabled, that is step two).
CVS patchset: 8289
CVS date: 2006/09/26 05:19:47
|
|
"clip" thing has caused too much confusion already since these variables
define a highlight area.
- add overlay offset support to video_out.c/alphablend/vo drivers
- use overlay offset to implement proper croping of frames when vo
driver doesn't support it
- add clipping checks to alphablend to avoid buffer overflow, buffer
"underflow" and wrapping.
- increase vo api number
- note: dxr3 support is incomplete about overlay offset
CVS patchset: 7739
CVS date: 2005/09/24 19:08:26
|
|
and this code is correctly understood by me ;)
also fall back to old behaviour (no cropping at all), if the image cannot
be cropped due to an unknown frame format
CVS patchset: 7024
CVS date: 2004/10/08 21:08:26
|
|
there is still some work to do, please report any breakages.
note: new xxmc driver tested with both nvidia and via libraries.
CVS patchset: 7007
CVS date: 2004/09/28 18:49:38
|
|
poor platforms, of course)
- fix a bug in generated xine-config for WIN32 and make it relocateable
under Windows
- MSVC port: update, fix some warnings, remove old unneeded files
- improve function for getting runtime directory, it will need next fix
yet (bug probably due to active volume drives)
CVS patchset: 7001
CVS date: 2004/09/26 22:54:51
|
|
- some vo drivers support cropping natively.
(only xv and xvmc have been tested)
- add software crop fallback to video_out.c
- skip yuv2rgb processing at xshm for not yet cropped frames
(these frames are never shown)
- libmpeg2 and ffmpeg now may use crop support
- bump vo api. (changes to xvmc/xxmc will follow)
CVS patchset: 6991
CVS date: 2004/09/22 20:29:13
|
|
finished event was sent to frontend before the output fifos were empty.
add a test for the number of streams attached to the output port. this will
prevent deadlocking on multi-streams scenarios where fifos don't ever get empty.
CVS patchset: 6777
CVS date: 2004/07/06 22:53:22
|
|
CVS patchset: 6713
CVS date: 2004/06/19 20:07:15
|
|
before, NULL could mean two things: no stream at all or a stream that does not
want to be addressed; now the latter is represented by the new XINE_ANON_STREAM
resulting changes:
* the status() functions now behave differently for NULL and XINE_ANON_STREAM
(as the commentary always implied, but this was not the case, so post
plugin rewiring went wrong, because it relies on the status() function)
* the NULL_STREAM defines in audio_out and video_out are obsolete
* update the function comments in the headers
* update the post plugin rewire functions to use the status() functions to
check, if the old port was opened and handle the new one accordingly;
this makes open_count obsolete
* change all post plugins accordingly (mostly using XINE_ANON_STREAM instead
of NULL)
additional change:
* the status() function of audio port now returns the bits/rate/mode values
of the input and not the output; this is more likely to be what a post plugin
wants
* the reimplementation of status() in the upmix plugin is obsolete
CVS patchset: 6603
CVS date: 2004/05/29 14:45:25
|
|
* post plugins are now much safer (fewer races/inconsistencies) and easier to write
* all post plugins are ported to the new architecture (and should work)
* ports can now be opened and closed with a NULL stream
CVS patchset: 6007
CVS date: 2004/01/07 19:52:42
|
|
CVS patchset: 5912
CVS date: 2003/12/14 22:13:22
|
|
text subtitles may now be rendered at full screen resolution
* load xine fonts on demand - faster startup
note: support added to xv, xshm and vidix
CVS patchset: 5780
CVS date: 2003/11/26 01:03:31
|
|
(we should finish this before rc3.)
- stream_info and meta_info variables are private now.
obs: everything must be recompiled due xine_stream_t changes
CVS patchset: 5733
CVS date: 2003/11/15 14:54:30
|
|
CVS patchset: 5721
CVS date: 2003/11/11 18:44:50
|
|
audio buffer can be NULL; this should be used to indicate that the frame/
buffer does not come directly from a stream, but was generated otherwise
(the most important result is that frames/buffers with stream NULL will not
be passed through metronom)
* modify visualization post plugins so they set the stream on the generated
frames to NULL, this avoids cluttering metronom, when playing a stream with
audio AND video AND a visualization post
* this also means modifying the way post plugins provide vpts values:
they have to calculate them themselves for now
CVS patchset: 5647
CVS date: 2003/10/30 22:40:53
|
|
* some obsolete VO_CAP_* constants removed
* VO_ZOOM_* constants replaced by their XINE_VO_ZOOM_* equivalents from xine.h
* moved some bits around
* proc_frame() needs only one parameter: the frame
* renamed copy_called to proc_called
* changed logic in video_out.c to call proc_* functions a bit
(call proc_frame() first, then call proc_slice() if proc_frame() has not set
proc_called, this allows video out plugins to have both hooks called)
CVS patchset: 5576
CVS date: 2003/10/23 15:17:06
|
|
video_out API version to 18.
CVS patchset: 5574
CVS date: 2003/10/22 20:38:09
|
|
- bump vo and post interface versions
obs: video_out_xvmc.c needs some more work, see todo.
CVS patchset: 5459
CVS date: 2003/10/06 21:52:42
|
|
video_overlay_manager, because
a) this thing is called "overlay manager" by everyone
b) the term "instance" is misleading, since it suggests that you would not
share the outcome of a get_instance() with others
CVS patchset: 5288
CVS date: 2003/08/15 14:35:09
|
|
increased lately), store flags in video out loop and catch some wrong ratios
CVS patchset: 5275
CVS date: 2003/08/12 13:53:30
|
|
minimal implementation of DVD pan&scan as needed by the dxr3
CVS patchset: 5246
CVS date: 2003/08/05 15:03:14
|
|
patch by Philip Jgenstedt
CVS patchset: 5243
CVS date: 2003/08/04 03:47:09
|
|
CVS patchset: 5105
CVS date: 2003/06/27 13:40:51
|
|
- do not trust progressive_frame for detecting NTSC 3:2, quote:
'the alternating progressive_frame encoding problem. This is a problem where the progressive_frame flag alternates between true and false every frame, when it really should have been set to "true" all the time.'
'There is a lot of content that is affected by this issue, because it's caused by a dumb decision by a very big company that made a very popular MPEG encoder. They've since fixed the encoder, but there are apparently still authoring companies that use it, because the problem is on a lot of high-profile current discs, like Disney's "Monsters Inc." and "Beauty and the Beast".'
http://www.hometheaterhifi.com/volume_8_2/dvd-benchmark-special-report-chroma-bug-4-2001.html
CVS patchset: 5025
CVS date: 2003/06/11 23:08:54
|
|
fixes, comments, suggestions are welcome
CVS patchset: 5011
CVS date: 2003/06/06 19:42:04
|
|
CVS patchset: 5003
CVS date: 2003/06/03 03:33:15
|
|
img->displayed is obsolete now, drivers should use img->free.
CVS patchset: 4994
CVS date: 2003/05/31 18:33:28
|
|
* regulate mutual inclusion based on XINE_COMPILE
* src/xine-engine/spu_decoder.h was unused
-> make it the spu decoder API header and remove src/libspudec/spu_decoder_api.h
* mark some xine_stream_t members as unused for next cleanup
CVS patchset: 4883
CVS date: 2003/05/20 13:50:55
|
|
CVS patchset: 4675
CVS date: 2003/04/25 15:34:44
|
|
rework xine_play_internal, wait for first frame after seek
CVS patchset: 4660
CVS date: 2003/04/23 14:33:01
|
|
CVS patchset: 4643
CVS date: 2003/04/20 21:13:21
|
|
CVS patchset: 4114
CVS date: 2003/02/07 17:28:10
|
|
CVS patchset: 4110
CVS date: 2003/02/06 00:09:19
|
|
CVS patchset: 4080
CVS date: 2003/02/01 19:22:30
|
|
processing api
CVS patchset: 3875
CVS date: 2003/01/11 19:06:52
|
|
CVS patchset: 3871
CVS date: 2003/01/11 12:51:17
|
|
CVS patchset: 3853
CVS date: 2003/01/10 13:12:20
|
|
of streams.
Michael, please let me know if you have a better idea! :)
CVS patchset: 3689
CVS date: 2002/12/27 03:40:07
|
|
CVS patchset: 3688
CVS date: 2002/12/27 02:03:06
|
|
- fix UI_PLAYBACK_FINISHED rifle
CVS patchset: 3686
CVS date: 2002/12/26 21:53:41
|
|
different sizeof than integer.
- add extra_info structure to pass informations from input/demuxers down
to the output frame. this can be used, for example, to pass the frame
number of a frame (when known by decoder). also, immediate benefict is
that we now have a slider which really shows the current position of
the playing stream. new fields can be added to extra_info keeping
binary compatibility
- bumpy everybody's api versions
CVS patchset: 3603
CVS date: 2002/12/21 12:56:44
|
|
- add copy_called flag. this will help us to track usage of copy() method.
any driver which support copy() must set this flag (for each "copied" frame)
- increase interface version
CVS patchset: 3433
CVS date: 2002/12/06 01:30:49
|
|
CVS patchset: 3405
CVS date: 2002/12/01 15:11:47
|