Page 1 of 2
soverlay broken after version 0.8.6a?
Posted: 13 Sep 2008 09:38
by zuah
Hi !
I have been transcoding DVB streams using VLC player and this batch script:
"c:\Program Files\VideoLAN\VLC\vlc" -vvv %1 --sub-track=1 --sout-transcode-deinterlace :sout=#transcode{fps=25,no-hurry-up,vcodec=mp2v,vb=3064,acodec=mp2a,ab=196,scale=1,channels=2,audio-sync,soverlay}:standard{mux=ps,dst=%1.mpg,access=file} vlc:quit
The idea is to burn the dvb subtitles into the video stream. This works fine with version 0.8.6a if I use mp2v codec. With h264 codec, aac audio and mp4 container subtitles are a mess.
I have tested several newer VLC versions including the latest nightly build (vlc-1.0.0-git-20080912-0006-win32.exe) but it seems that soverlay is not working after version 0.8.6a. Or am I doing something wrong?
Thank you for your hard work.
Re: soverlay broken after version 0.8.6a?
Posted: 13 Sep 2008 17:24
by VLC_help
Overlays/Subtitles:
--sout-transcode-senc=<string>
Subtitles encoder
This is the subtitles encoder module that will be used (and its
associated options).
--sout-transcode-scodec=<string>
Destination subtitles codec
This is the subtitles codec that will be used.
--sout-transcode-soverlay, --no-sout-transcode-soverlay
Destination subtitles codec (default disabled)
This is the subtitles codec that will be used. (default disabled)
--sout-transcode-sfilter=<string>
Overlays
This allows you to add overlays (also known as "subpictures" on the
transcoded video stream. The subpictures produced by the filters will
be overlayed directly onto the video. You must specify a
comma-separated list of subpicture modules
http://wiki.videolan.org/VLC_command-line_help do these work any better?
Re: soverlay broken after version 0.8.6a?
Posted: 14 Sep 2008 13:25
by zuah
I tested the options but no change. The stream is transcoded without subtitles.
I found these lines from the message window:
stream_out_transcode debug: subtitles (fcc=`dvbs') overlaying
main debug: looking for decoder module: 35 candidates
main debug: using decoder module "dvbsub"
This part works for sure "c:\Program Files\VideoLAN\VLC\vlc" -vvv %1 --sub-track=1. VLC player starts playing the video and subtitles are shown.
Re: soverlay broken after version 0.8.6a?
Posted: 14 Sep 2008 13:53
by VLC_help
You have a short sample file you could share?
Re: soverlay broken after version 0.8.6a?
Posted: 14 Sep 2008 16:29
by zuah
I uploaded sample (28MB) to rapidshare
http://rapidshare.de/files/40471079/YLE_test.ts.html
For this file I have to set --sub-track=0 to see the correct subtitles.
Re: soverlay broken after version 0.8.6a?
Posted: 14 Sep 2008 22:13
by DJ
My tests show that the soverlay is NOT broken, in that other formats with subs are combined with the picture. Also if you use your batch file with your sample and choose sub track 1 the teletext is combined with the picture, thus proving that the soverlay function works.
The issue here could be with DVB subs that are not being combined properly however every front end I have (2) for Directshow says there are no subs present with your sample file. I know that teletext is not supported by these front ends but DVB subs are. This was determined using graph edit and doing a examination of the file. Obviously there are subs within your test file. So I set up the transcode for VLC to do all elementary streams, but only the teletext came across.
I guess the big question remains is what this sub (format) and why it isn't being recognized by the transcoder. I realize that VLC says it's DVBS
I do have another program that can do a more through examination of your test file, but it is not installed on my machine at the moment because it interferes with another program I have installed.
At this point I would suggest choosing another program source for your test sample and try again to see if the problem persists.
Re: soverlay broken after version 0.8.6a?
Posted: 14 Sep 2008 22:38
by jmetsako
I 100% agree with zuah. After version 0.8.6a subtitle selecting is somehow broken.
"C:\Program Files\VideoLAN\vlc-0.8.6a\vlc" --sub-language=fi "%infile%" --sout "#transcode{soverlay, vcodec=mp2v, vb=3000, acodec=mpga, ab=128, channels=2, audio-sync}:std{access=file, mux=ps, dst=%outfile%}"
Works like charm but not with any later versions.
br.
Jani
Re: soverlay broken after version 0.8.6a?
Posted: 14 Sep 2008 22:39
by zuah
I don't know if this helps but here is a demux log from projectx:
Code: Select all
14. syyskuuta 2008 23.26.51 EEST
ProjectX 0.90.04.00.b21 (30.08.2007)
-> working with collection 0
-> save normal log file
-> log 'packets out of sequence' / bit errors
-> log 'missing startcodes'
-> log 'PES header found in ES'
-> log WSS
-> log VPS
-> log RDS
-> log max. 500 warnings/errors
-> write all video data
-> write all other data
-> patch c.d.flagged infos of pictures
-> add sequence end code
-> insert sequenzendcode on format changes
-> set resolution in SDE
-> ensure each GOP has a sequenceheader
-> PVA: strictly specs. for audio streams
-> VOB: determine diff. Cell timelines
-> TS: ignore scrambled packets
-> TS: enhanced search for open packets
-> TS: join file segments (of Dreambox®)
-> TS: generate PMT stream dependent
-> get only enclosed PES/TS packets
-> concatenate different recordings
-> ensure 1st PES-packet start with video
-> generate PCR/SCR from PTS
-> write output files to: 'F:\Tallenukset'
-> 2 cutpoint(s) defined ( (0) use BytePos. for cuts )
-> main I/O-Buffersize in bytes 4096000 bytes
FileSegments:
* (0) I:\YLE_test.ts
second. Files:
* ---
+> Input File 0: 'I:\YLE_test.ts' (29 627 108 bytes)
-> Filetype is TS (generic PES Container)
-> demux
-> Service ID 0x1
-> PMT 0x1771 refers to these usable streams:
Video:
PID: 0x200(#0)
Audio:
PID: 0x28A(eng)(#138)
Teletext:
PID: 0x911(fin_i100 )
Subpict.:
PID: 0x403(fin_0x11_p1_a50 )
!> PID 0x0 (PAT) (7520 #41) -> ignored
ok> PID 0x200 has PES-ID 0xE0 (MPEG Video) (12408 #67)
ok> PID 0x911 has PES-ID 0xBD (private stream 1) (TTX) (12972 #70)
ok> PID 0x28A has PES-ID 0xC0 (MPEG Audio) (23688 #127)
!> PID 0x1771 (PMT) (63732 #340) -> ignored
-> cut-in @ GOP# 0 / new vframe 0 / new Timecode 00:00:00.000 (283504)
-> video basics: 720*576 @ 25fps @ 0.7031 (16:9) @ 8400000bps, vbvBuffer 112
-> starting export of video data @ GOP# 0
!> dropping useless B-Frames @ GOP# 0 / new Timecode 00:00:00.000
ok> PID 0x403 has PES-ID 0xBD (private stream 1) (SubID 0x20) (1536712 #8175)
packs: 156847 100% 29627108
++> Mpg Video: PID 0x0200 / PesID 0xE0 / SubID 0x00 :
-> Video: fr-ct-1p-cg-og-dg -> 1402-1-0-117-0-0
-> Video length: 1402 frames @ 00:00:56.080
-> GOP summary: min. 20, max. 24 fields; contains interlaced frames
-> avg. nom. bitrate 3537293bps (min/max: 2784800/4762000)
-> set first sequenceheader bitrate to 4762000bps
---> new File: F:\Tallenukset\YLE_test.mpv
++> Teletext: PID 0x0911 / PesID 0xBD / SubID 0x10 :
-> export format: srt
-> temp. file: YLE_test.tt (1488606 bytes)
-> looking for page number 451
-> Teletext PTS: first packet 09:54:52.138, last packet 09:55:48.178
-> Video PTS: start 1.GOP 09:54:52.661, end last GOP 09:55:48.741
->adjusting teletext at video-timeline
-> program: YLE
6 pages of No. 451 written...
---> new File: F:\Tallenukset\YLE_test[451].srt
++> Mpg Audio: PID 0x028A / PesID 0xC0 / SubID 0x00 :
-> check CRC of AC-3 / MPEG-Audio L1,2
-> remove CRC in MPEG-Audio L1,2
-> add frames
-> Audio PTS: first packet 09:54:52.138, last packet 09:55:48.298
-> Video PTS: start 1.GOP 09:54:52.661, end last GOP 09:55:48.741
-> adjusting audio at video-timeline
-> src_audio: MPEG-1, Layer2, 48000Hz, stereo, 224kbps, CRC @ 00:00:00.000
!> 14 frame(s) (336ms) added @ 00:00:55.752
audio frames: wri-pre-skip-ins-add 2337-0-0-0-14 @ 00:00:56.088 done...
---> new File: 'F:\Tallenukset\YLE_test.mp2.mpa.wav'
++> Subpicture: PID 0x0403 / PesID 0xBD / SubID 0x20 :
-> selected DVB subpicture color model: YLE ; fixed to page id:
-> export format: sup
-> temp. file: YLE_test.sp (48219 bytes)
-> set new picture display mode: all forced
-> Subpicture PTS: first packet 09:54:56.796, last packet 09:55:39.719
-> Video PTS: start 1.GOP 09:54:52.661, end last GOP 09:55:48.741
-> adjusting subpicture at video-timeline
-> source is DVB Subtitle...
5 subpictures written...
---> new File: F:\Tallenukset\YLE_test.sup
-> create VobSub Files (idx + sub) : F:\Tallenukset\YLE_test.sup.sub
summary of created media files:
.Video (m2v): 1402 Frames 00:00:56.080 'F:\Tallenukset\YLE_test.mpv'
Audio 00 (mp2): 2337 Frames 00:00:56.088 0-0-0-14 'F:\Tallenukset\YLE_test.mp2.mpa.wav'
SubPicture 01: 5 subpictures 'F:\Tallenukset\YLE_test.sup'
Teletext 00: 6 pages of No. 451 'F:\Tallenukset\YLE_test[451].srt'
=> 26 399 570 bytes written...
-> we have 4 warnings/errors.
Re: soverlay broken after version 0.8.6a?
Posted: 14 Sep 2008 22:56
by DJ
Given that formats other than DVB are being written to picture during the transcode the soverlay function is not broken. It is more likely that changes were made to the DVB module and that only this format is effected.
Has anyone tried VLC 0.9?
Re: soverlay broken after version 0.8.6a?
Posted: 18 Sep 2008 14:04
by jmetsako
yes, tested with 0.9.2
"C:\Program Files\VideoLAN\vlc-0.9.2\vlc" --sub-language=fi file://"%infile%" --sout "#transcode{soverlay, vcodec=mp2v, vb=3000, acodec=mpga, ab=128, channels=2, audio-sync}:std{access=file, mux=ps, dst=%outfile%}"
Same result, no subtitles on outfile
Or did you mean especially 0.9 version?
Re: soverlay broken after version 0.8.6a?
Posted: 19 Sep 2008 19:42
by VLC_help
0.9.2 should be the right one for testing. Only option that comes to my mind is track the change that made this in 0.8.6
Re: soverlay broken after version 0.8.6a?
Posted: 19 Sep 2008 19:58
by zuah
I did some tests with builds vlc-0.9.3-git-win32.exe and vlc-1.0.0-git-20080919-0711-win32.exe.
-still no subtitles after transcoding
-audio goes out of sync if mpeg4 codec is used
-VLC player crashes when h264 codec is used
Test setup: Win XP Pro SP3, AMD 3800+ X2, PNY GeForce 7600GT, 2GB Ram
Re: soverlay broken after version 0.8.6a?
Posted: 20 Sep 2008 18:17
by VLC_help
IIRC there was one x264 related patch posted to mailing list that hopefully fixes the H.264 encoding.
Re: soverlay broken after version 0.8.6a?
Posted: 27 Sep 2008 07:47
by zuah
I made the same tests with nightly build vlc-0.9.4-git-win32.exe 27-Sep-2008 02:33.
No improvements
There seems to be issue with video quality when transcoding to mpeg4 format. Looks like the deblocking filter is not working like it should be. The quality is much better when I use version 0.8.6a
I uploaded short samples to rapidshare:
http://rapidshare.de/files/40560014/VLC ... t.zip.html
Re: soverlay broken after version 0.8.6a?
Posted: 01 Oct 2008 21:13
by zuah
Build vlc-0.9.4-git-win32.exe 01-Oct-2008 10:52 tested. No improvements.
Re: soverlay broken after version 0.8.6a?
Posted: 02 Oct 2008 10:00
by boghead
I know I am not supposed to post anything about other operating systems here, but, just in case it is relevant, I am seeing this same problem on the Linux client as well.
Re: soverlay broken after version 0.8.6a?
Posted: 12 Oct 2008 19:57
by jmetsako
Tested also now with 0.9.4 release and no help.
Re: soverlay broken after version 0.8.6a?
Posted: 13 Nov 2008 20:28
by zuah
Build vlc-0.9.7-git-win32.exe 13-Nov-2008 02:35 tested. No improvements.
Re: soverlay broken after version 0.8.6a?
Posted: 22 Dec 2008 23:34
by johu
Hi. I can confirm this problem with DVB subtitles is really present on both win32 and linux platforms. Overlaying DVB subtitles to video prior re-encoding works up to 0.8.6a and fails on 0.8.6b and all later versions including number of nightly builds picked randomly between 0.8.6b and those built on last night. I went thru patches between 0.8.6a and 0.8.6b on Linux (FC10) and managed to pinpoint problematic patch.
This is commit that causes subtitles to fail:
http://git.videolan.org/?p=vlc.git;a=co ... c39e7dcd86
Code: Select all
9b6378b771cc4c9618dd934a8a4bf5c39e7dcd86 is first bad commit
commit 9b6378b771cc4c9618dd934a8a4bf5c39e7dcd86
Author: Christophe Massiot <massiot@videolan.org>
Date: Fri Apr 6 18:03:48 2007 +0000
* Backport basic teletext decoder, and teletext and dvbsub-related fixes
in the TS demux and mux. Includes changesets :
[18605] [18606] [18607] [18609] [18610] [18613] [18615] [18620] [18630]
[18633] [19717]
I used following command-line:
Code: Select all
vlc -vvv YLE_TV1_dvbsub_ttxsub.ts --sub-track=0 --sout-transcode-deinterlace ':sout=#transcode{vcodec=mp2v,vb=1000,acodec,soverlay}:standard{mux=ps,dst=output.mpg,access=file}' vlc://quit --intf dummy
Source file used:
http://sukkamehulinko.romikselle.com/vl ... _ttxsub.ts (20MB)
Output from build with bad patch applied:
http://sukkamehulinko.romikselle.com/vl ... ut-bad.mpg (15MB)
Output from build without bad patch:
http://sukkamehulinko.romikselle.com/vl ... put-ok.mpg (16MB)
Using same binary compiled with this commit that also adds support for ttx subs I can create files with overlayed teletext subtitles. They're not synced properly but that's another story and might be already fixed on newer builds. Here's command line used and sample output just in case someone finds it useful.
Code: Select all
vlc -vvv YLE_TV1_dvbsub_ttxsub.ts --sub-track=1 --sub-language fi --telx-override-page=451 --sout-transcode-deinterlace ':sout=#transcode{vcodec=mp2v,vb=1000,acodec,soverlay}:standard{mux=ps,dst=output.mpg,access=file}' vlc://quit --intf dummy
Output from build with bad patch applied in teletext mode:
http://sukkamehulinko.romikselle.com/vl ... ttxsub.mpg
Re: soverlay broken after version 0.8.6a?
Posted: 23 Dec 2008 00:53
by johu
DVB subtitles work if I remove changes problematic commit applies to modules/demux/ts.c. Any ideas? Something wrong on this code or elsewhere which is just triggered by change to demux/ts.c?
Code: Select all
--- a/modules/demux/ts.c
+++ b/modules/demux/ts.c
@@ -3009,69 +3009,213 @@ static void PMTCallBack( demux_t *p_demux, dvbpsi_pmt_t *p_pmt )
msg_Dbg( p_demux, " * EBU Teletext descriptor" );
pid->es->fmt.i_cat = SPU_ES;
pid->es->fmt.i_codec = VLC_FOURCC( 't', 'e', 'l', 'x' );
- pid->es->fmt.psz_description = strdup( "Teletext" );
pid->es->fmt.i_extra = p_dr->i_length;
pid->es->fmt.p_extra = malloc( p_dr->i_length );
memcpy( pid->es->fmt.p_extra, p_dr->p_data,
p_dr->i_length );
+
+#if defined _DVBPSI_DR_56_H_ && defined DVBPSI_VERSION \
+ && DVBPSI_VERSION_INT > ((0<<16)+(1<<8)+5)
+ pid->es->fmt.i_group = p_pmt->i_program_number;
+
+ /* In stream output mode, only enable descriptor
+ * pass-through. */
+ if( !p_demux->out->b_sout )
+ {
+ uint16_t n, i = 0;
+ dvbpsi_teletext_dr_t *sub;
+
+ sub = dvbpsi_DecodeTeletextDr( p_dr );
+ if( !sub ) continue;
+
+ /* Each subtitle ES contains n languages,
+ * We are going to create n ES for the n tracks */
+ for( n = 0; n < sub->i_pages_number; n++ )
+ {
+ dvbpsi_teletextpage_t *p_page = &sub->p_pages[n];
+ if( p_page->i_teletext_type == 0x2
+ || p_page->i_teletext_type == 0x5 )
+ {
+ ts_es_t *p_es;
+
+ if( i == 0 )
+ {
+ p_es = pid->es;
+ }
+ else
+ {
+ p_es = malloc( sizeof( ts_es_t ) );
+ p_es->fmt = pid->es->fmt;
+ p_es->id = NULL;
+ p_es->p_pes = NULL;
+ p_es->i_pes_size = 0;
+ p_es->i_pes_gathered = 0;
+ p_es->pp_last = &p_es->p_pes;
+ p_es->p_mpeg4desc = NULL;
+
+ TAB_APPEND( pid->i_extra_es, pid->extra_es,
+ p_es );
+ }
+
+ p_es->fmt.psz_language = malloc( 4 );
+ memcpy( p_es->fmt.psz_language,
+ p_page->i_iso6392_language_code, 3 );
+ p_es->fmt.psz_language[3] = 0;
+
+ switch( p_page->i_teletext_type )
+ {
+ case 0x2:
+ p_es->fmt.psz_description =
+ strdup(_("subtitles"));
+ msg_Dbg( p_demux,
+ " * sub lan=%s page=%d%x",
+ p_es->fmt.psz_language,
+ p_page->i_teletext_magazine_number,
+ p_page->i_teletext_page_number );
+ break;
+
+ case 0x5:
+ p_es->fmt.psz_description =
+ strdup(_("hearing impaired"));
+ msg_Dbg( p_demux,
+ " * hearing impaired lan=%s page=%d%x",
+ p_es->fmt.psz_language,
+ p_page->i_teletext_magazine_number,
+ p_page->i_teletext_page_number );
+ break;
+ default:
+ break;
+ }
+
+ p_es->fmt.subs.dvb.i_id =
+ p_page->i_teletext_page_number;
+ /* Hack, FIXME */
+ p_es->fmt.subs.dvb.i_id |=
+ ((int)p_page->i_teletext_magazine_number << 16);
+
+ i++;
+ }
+ }
+
+ if( !i )
+ pid->es->fmt.i_cat = UNKNOWN_ES;
+ }
+ else
+#endif /* defined _DVBPSI_DR_56_H_ && DVBPSI_VERSION(0,1,6) */
+ {
+ pid->es->fmt.subs.dvb.i_id = -1;
+ pid->es->fmt.psz_description = strdup( "Teletext" );
+ }
}
-#ifdef _DVBPSI_DR_59_H_
else if( p_dr->i_tag == 0x59 )
{
- uint16_t n;
- dvbpsi_subtitling_dr_t *sub;
-
/* DVB subtitles */
pid->es->fmt.i_cat = SPU_ES;
pid->es->fmt.i_codec = VLC_FOURCC( 'd', 'v', 'b', 's' );
- pid->es->fmt.i_group = p_pmt->i_program_number;
+ pid->es->fmt.i_extra = p_dr->i_length;
+ pid->es->fmt.p_extra = malloc( p_dr->i_length );
+ memcpy( pid->es->fmt.p_extra, p_dr->p_data,
+ p_dr->i_length );
- sub = dvbpsi_DecodeSubtitlingDr( p_dr );
- if( !sub ) continue;
+#ifdef _DVBPSI_DR_59_H_
+ pid->es->fmt.i_group = p_pmt->i_program_number;
- /* Each subtitle ES contains n languages,
- * We are going to create n ES for the n tracks */
- if( sub->i_subtitles_number > 0 )
+ /* In stream output mode, only enable descriptor
+ * pass-through. */
+ if( !p_demux->out->b_sout )
{
- pid->es->fmt.psz_language = malloc( 4 );
- memcpy( pid->es->fmt.psz_language,
- sub->p_subtitle[0].i_iso6392_language_code, 3);
- pid->es->fmt.psz_language[3] = 0;
-
- pid->es->fmt.subs.dvb.i_id =
- sub->p_subtitle[0].i_composition_page_id;
- /* Hack, FIXME */
- pid->es->fmt.subs.dvb.i_id |=
- ((int)sub->p_subtitle[0].i_ancillary_page_id << 16);
- }
- else pid->es->fmt.i_cat = UNKNOWN_ES;
+ uint16_t n, i = 0;
+ dvbpsi_subtitling_dr_t *sub;
+
+ sub = dvbpsi_DecodeSubtitlingDr( p_dr );
+ if( !sub ) continue;
+
+ for( n = 0; n < sub->i_subtitles_number; n++ )
+ {
+ dvbpsi_subtitle_t *p_sub = &sub->p_subtitle[n];
+ ts_es_t *p_es;
+
+ if( i == 0 )
+ {
+ p_es = pid->es;
+ }
+ else
+ {
+ p_es = malloc( sizeof( ts_es_t ) );
+ p_es->fmt = pid->es->fmt;
+ p_es->id = NULL;
+ p_es->p_pes = NULL;
+ p_es->i_pes_size = 0;
+ p_es->i_pes_gathered = 0;
+ p_es->pp_last = &p_es->p_pes;
+ p_es->p_mpeg4desc = NULL;
+
+ TAB_APPEND( pid->i_extra_es, pid->extra_es,
+ p_es );
+ }
+
+ p_es->fmt.psz_language = malloc( 4 );
+ memcpy( p_es->fmt.psz_language,
+ p_sub->i_iso6392_language_code, 3 );
+ p_es->fmt.psz_language[3] = 0;
+
+ switch( p_sub->i_subtitling_type )
+ {
+ case 0x10:
+ p_es->fmt.psz_description =
+ strdup(_("subtitles"));
+ break;
+ case 0x11:
+ p_es->fmt.psz_description =
+ strdup(_("4:3 subtitles"));
+ break;
+ case 0x12:
+ p_es->fmt.psz_description =
+ strdup(_("16:9 subtitles"));
+ break;
+ case 0x13:
+ p_es->fmt.psz_description =
+ strdup(_("2.21:1 subtitles"));
+ break;
+ case 0x20:
+ p_es->fmt.psz_description =
+ strdup(_("hearing impaired"));
+ break;
+ case 0x21:
+ p_es->fmt.psz_description =
+ strdup(_("4:3 hearing impaired"));
+ break;
+ case 0x22:
+ p_es->fmt.psz_description =
+ strdup(_("16:9 hearing impaired"));
+ break;
+ case 0x23:
+ p_es->fmt.psz_description =
+ strdup(_("2.21:1 hearing impaired"));
+ break;
+ default:
+ break;
+ }
+
+ p_es->fmt.subs.dvb.i_id =
+ p_sub->i_composition_page_id;
+ /* Hack, FIXME */
+ p_es->fmt.subs.dvb.i_id |=
+ ((int)p_sub->i_ancillary_page_id << 16);
+
+ i++;
+ }
- for( n = 1; n < sub->i_subtitles_number; n++ )
+ if( !i )
+ pid->es->fmt.i_cat = UNKNOWN_ES;
+ }
+ else
+#endif /* _DVBPSI_DR_59_H_ */
{
- ts_es_t *p_es = malloc( sizeof( ts_es_t ) );
- p_es->fmt = pid->es->fmt;
- p_es->id = NULL;
- p_es->p_pes = NULL;
- p_es->i_pes_size = 0;
- p_es->i_pes_gathered = 0;
- p_es->pp_last = &p_es->p_pes;
- p_es->p_mpeg4desc = NULL;
-
- p_es->fmt.psz_language = malloc( 4 );
- memcpy( p_es->fmt.psz_language,
- sub->p_subtitle[n].i_iso6392_language_code, 3);
- p_es->fmt.psz_language[3] = 0;
-
- p_es->fmt.subs.dvb.i_id =
- sub->p_subtitle[n].i_composition_page_id;
- /* Hack, FIXME */
- p_es->fmt.subs.dvb.i_id |=
- ((int)sub->p_subtitle[n].i_ancillary_page_id << 16);
-
- TAB_APPEND( pid->i_extra_es, pid->extra_es, p_es );
+ pid->es->fmt.subs.dvb.i_id = -1;
+ pid->es->fmt.psz_description = strdup( "DVB subtitles" );
}
}
-#endif /* _DVBPSI_DR_59_H_ */
}
}
else if( p_es->i_type == 0xa0 )
Re: soverlay broken after version 0.8.6a?
Posted: 23 Dec 2008 01:34
by johu
Think I just found it. That problematic commit seems to disable dvb subtitle processing in sout mode. After I removed that check (see patch below) "burning" dvb subtitles to image work again even with rest of ttxsubs patch still applied.
Hopefully someone with better understanding of C and VLC could take a look at this and make proper fix to implement on next release as now problem has been narrowed to few lines - no need to go thru four months worth of commits anymore.
Code: Select all
--- modules/demux/ts.c.old 2008-12-23 00:59:54.000000000 +0200
+++ modules/demux/ts.c 2008-12-23 01:10:05.000000000 +0200
@@ -3120,10 +3120,6 @@
#ifdef _DVBPSI_DR_59_H_
pid->es->fmt.i_group = p_pmt->i_program_number;
- /* In stream output mode, only enable descriptor
- * pass-through. */
- if( !p_demux->out->b_sout )
- {
uint16_t n, i = 0;
dvbpsi_subtitling_dr_t *sub;
@@ -3208,13 +3204,7 @@
if( !i )
pid->es->fmt.i_cat = UNKNOWN_ES;
- }
- else
#endif /* _DVBPSI_DR_59_H_ */
- {
- pid->es->fmt.subs.dvb.i_id = -1;
- pid->es->fmt.psz_description = strdup( "DVB subtitles" );
- }
}
}
}
Re: soverlay broken after version 0.8.6a?
Posted: 23 Dec 2008 02:45
by johu
Compiled 0.9.8a using SRPM from atrpms.net on Fedora 10. By default stream overlay with teletext subtitles work but fail with dvb subtitles. After making change shown on my previous post both teletext and dvb subtitle soverlay works at least with my short test clips. With teletext timing is still slightly off (much less than with 0.8.6b), but this could be problem with source material as well.
So for my needs this problem is solved with this hack for now. Hopefully proper fix will be included in future releases so users don't need to recompile after every new release. While it's easy with atrpms.net SRPM on Linux I assume not many Windows users have required tools available.
Re: soverlay broken after version 0.8.6a?
Posted: 23 Dec 2008 13:00
by Jean-Baptiste Kempf
Send the solutions and remarks to the mailing list team.
Re: soverlay broken after version 0.8.6a?
Posted: 23 Dec 2008 14:20
by johu
"Mailing list team" would be vlc-devel?
Re: soverlay broken after version 0.8.6a?
Posted: 23 Dec 2008 17:25
by Jean-Baptiste Kempf
yes.