Jump to content


Photo

exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format


  • Please log in to reply
38 replies to this topic

Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #21 Erik Slagter

  • PLi® Core member
  • 46,951 posts

+541
Excellent

Posted 12 May 2019 - 08:59

I think you got the complete video stream here, not only the CC's!


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #22 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 12 May 2019 - 14:38

I think it's only CC's.

I used the file ts.py from here: https://github.com/D...ash_tools/ts.py


....

if __name__=='__main__':
    try:
        ATSC_parser = ATSCParser(True, "ATSC")
        data = '\x00\x00\x01\x06\x01\x01\x04\x80\x00\x00\x00\x01\x06\x04\x29\xb5\x00\x31\x47\x41\x39\x34\x03\xca\xff\xfd\x80\x80\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xff\x04\x09\xb5\x00\x31\x44\x54\x47\x31\x41\xfa\x04\x09\xb5\x00\x31\x47\x41\x39\x34\x06\x0f\x80\x00\x00\x00\x01\x01\xa9\xe7\xb5\x18\x44\x4a\x5f\x7c\xc2\x6b\xcb\x71\xf7\x72\x79\xdb\xf4\xae\x5e\x88\xdc\xf8\x98\x47\x7f\x6b\xed\xb1\xc7\x99\xe8\xc1\x3f\xbb\x63\x6e\x5f\x26\x4f\x42\xdd\x44\x00\xd8\xea\x1d\xe6\xfd\x06\xfb\x74\x9a\x7b\xf8\x39\x21\x1b\x6b\x14\xd6\x76\x27\xaa\x90\x4a\x17\xee\xd1\xad\x35\xad\xad\x75\xe5\x74\xf4\x6e\x8f\x31\x8b\x95\x0c\x65\x45\x3b\x34\xba\x4b\xc5\x5d\x8f\x51\xaa\xa6\x38\x0b\x3c\x05\x1b\x11\x09\x48\x06\xe0\xea\x41\x0b\x5b\x0b\x7f\xc7\xb1\x1f\xd1\xaf\x42\xbb\x7c\xe6\x2e\xcc\x62\xf7\x1b\xd9\x8f\x71\xe4\xce\x10\x72\x61\x3c\xb4\x9e\xe0\x99\x9b\xa9\x3e\x6c\xf2\xd4\x9b\xef\x29\x90\xc4\x0e\x5b\xe8\x92\x43\xdc\x80\x48\x09\xdf\x1b\x4a\xa0\x82\x59\x8e\xf3\xe6\x77\x61\xab\x51\xe3\x1f\x9a\xdb\x44\x88\x2d\x92\x46'
        offset = 18
        print dump_hex(data[offset:], 16)
        reader = bitreader(data[offset:])
        first_byte = read_bits(reader, 8, '    user_data_type_code', display=True, to_hex=True)
        if first_byte != 0x3:
            user_identifier = read_bits(reader, 24, '    user identifier_3', display=True, to_hex=True)
            if first_byte == 0x47 and int(user_identifier) == 0x413934:
                ATSC_parser.parse(reader, 0)
                ATSC_parser.get_cc_summary()
        else:
            print "first_byte = %d" % first_byte

       #main()
    except Exception as e:
        print e

# python ts.py
0000   47 41 39 34 03 CA FF FD 80 80 FA 00 00 FA 00 00    GA94............
0010   FA 00 00 FA 00 00 FA 00 00 FA 00 00 FA 00 00 FA    ................
0020   00 00 FA 00 00 FF 04 09 B5 00 31 44 54 47 31 41    ..........1DTG1A
0030   FA 04 09 B5 00 31 47 41 39 34 06 0F 80 00 00 00    .....1GA94......
0040   01 01 A9 E7 B5 18 44 4A 5F 7C C2 6B CB 71 F7 72    ......DJ_|.k.q.r
0050   79 DB F4 AE 5E 88 DC F8 98 47 7F 6B ED B1 C7 99    y...^....G.k....
0060   E8 C1 3F BB 63 6E 5F 26 4F 42 DD 44 00 D8 EA 1D    ..?.cn_&OB.D....
0070   E6 FD 06 FB 74 9A 7B F8 39 21 1B 6B 14 D6 76 27    ....t.{.9!.k..v'
0080   AA 90 4A 17 EE D1 AD 35 AD AD 75 E5 74 F4 6E 8F    ..J....5..u.t.n.
0090   31 8B 95 0C 65 45 3B 34 BA 4B C5 5D 8F 51 AA A6    1...eE;4.K.].Q..
00A0   38 0B 3C 05 1B 11 09 48 06 E0 EA 41 0B 5B 0B 7F    8.<....H...A.[..
00B0   C7 B1 1F D1 AF 42 BB 7C E6 2E CC 62 F7 1B D9 8F    .....B.|...b....
00C0   71 E4 CE 10 72 61 3C B4 9E E0 99 9B A9 3E 6C F2    q...ra<......>l.
00D0   D4 9B EF 29 90 C4 0E 5B E8 92 43 DC 80 48 09 DF    ...)...[..C..H..
00E0   1B 4A A0 82 59 8E F3 E6 77 61 AB 51 E3 1F 9A DB    .J..Y...wa.Q....
00F0   44 88 2D 92 46                                     D.-.F

    user_data_type_code                 : 0x47
    user identifier_3                   : 0x413934
      [ATSC User Data]
      user data type code               : 3
      process em data flag              : 1
      process cc data flag              : 1
      additional data flag              : 0
      cc count                          : 10
      em data                           : 255
      cc_data_pkt
        marker bits (0x1f)              : 0x1f
        cc valid                        : 1
        cc type                         : 1
        cc_data_1                       : 0x80
        cc_data_2                       : 0x80
          [CEA-608 PACKET DATA type=1] (80, 80)
      cc_data_pkt
        marker bits (0x1f)              : 0x1f
        cc valid                        : 0
        cc type                         : 2
        cc_data_1                       : 0x00
        cc_data_2                       : 0x00
          [CEA-708 cc_valid == 0 (padding)]
      cc_data_pkt
        marker bits (0x1f)              : 0x1f
        cc valid                        : 0
        cc type                         : 2
        cc_data_1                       : 0x00
        cc_data_2                       : 0x00
          [CEA-708 cc_valid == 0 (padding)]
      cc_data_pkt
        marker bits (0x1f)              : 0x1f
        cc valid                        : 0
        cc type                         : 2
        cc_data_1                       : 0x00
        cc_data_2                       : 0x00
          [CEA-708 cc_valid == 0 (padding)]
      cc_data_pkt
        marker bits (0x1f)              : 0x1f
        cc valid                        : 0
        cc type                         : 2
        cc_data_1                       : 0x00
        cc_data_2                       : 0x00
          [CEA-708 cc_valid == 0 (padding)]
      cc_data_pkt
        marker bits (0x1f)              : 0x1f
        cc valid                        : 0
        cc type                         : 2
        cc_data_1                       : 0x00
        cc_data_2                       : 0x00
          [CEA-708 cc_valid == 0 (padding)]
      cc_data_pkt
        marker bits (0x1f)              : 0x1f
        cc valid                        : 0
        cc type                         : 2
        cc_data_1                       : 0x00
        cc_data_2                       : 0x00
          [CEA-708 cc_valid == 0 (padding)]
      cc_data_pkt
        marker bits (0x1f)              : 0x1f
        cc valid                        : 0
        cc type                         : 2
        cc_data_1                       : 0x00
        cc_data_2                       : 0x00
          [CEA-708 cc_valid == 0 (padding)]
      cc_data_pkt
        marker bits (0x1f)              : 0x1f
        cc valid                        : 0
        cc type                         : 2
        cc_data_1                       : 0x00
        cc_data_2                       : 0x00
          [CEA-708 cc_valid == 0 (padding)]
      cc_data_pkt
        marker bits (0x1f)              : 0x1f
        cc valid                        : 0
        cc type                         : 2
        cc_data_1                       : 0x00
        cc_data_2                       : 0x00
          [CEA-708 cc_valid == 0 (padding)]
      marker bits (0xff)                : 0xff
The user data is from my previous post.
Wavefield T90: 0.8W - 1.9E - 4.8E - 13E - 16E - 19.2E - 23.5E - 26E - 33E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916

Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #23 Erik Slagter

  • PLi® Core member
  • 46,951 posts

+541
Excellent

Posted 12 May 2019 - 15:52

One of two of your assumptions must be wrong ;)

 

Either they're using the same (PES) packet id (which I think we've established earlier on) and in that case there is no more mux layer left between CC data and video data. CC data is simply interleaved with the video stream using codec extensions. The whole video stream must be parsed for CC.

Or they're using another packet id and then you can simply filter out the CC data on PES level. I think you can even have the demuxer do it for you. But apparently that's not the case.


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #24 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 12 May 2019 - 16:08

[PACKETIZED ELEMENTARY STREAM]
  packet start prefix                   : 1
  stream id                             : 6
  pes packet length                     : 257
  marker bits (2)                       : 0
  scrambling control                    : 0
  priority                              : 0
  data alignment indicator              : 1
  copyright                             : 0
  original or copy                      : 0
  pts dts indicator                     : 2
  escr flag                             : 0
  es rate flag                          : 0
  dsm trick mode flag                   : 0
  additional copy info flag             : 0
  pes crc flag                          : 0
  pes extension flag                    : 0
  pes header length                     : 0
   marker (2)                           : 0
   pts 1(3)                             : 0
   marker                               : 0
   pts 2(3)                             : 0
   marker                               : 1
   pts 3(3)                             : 770
   marker                               : 0
Creating a PES reader on video PID and setting the stream_id to 0x06 is enough to get the CC data.

I am sure, that extracting the CEA-608 from user data and feeding an CEA-608 decoder will give you the subtitles back.

There is an python CEA-608 decoder here: https://github.com/D...tools/cea608.py

Most probably if we expose the data to enigma2, using a signal and feed this CEA-608 decoder with event data, we are going to get subtitles.

Although that would be "really" heavy. The encoder should be done in C++ for speed.
Wavefield T90: 0.8W - 1.9E - 4.8E - 13E - 16E - 19.2E - 23.5E - 26E - 33E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916

Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #25 Erik Slagter

  • PLi® Core member
  • 46,951 posts

+541
Excellent

Posted 14 May 2019 - 19:05

The question is: will you "get the CC data" or will you "just get the CC data". That's what I'm trying to find out. If the CC data is on a separate PES id (which I don't think is the case), you can probably have the DVB demuxer split it, which would be nice. But I fear the CC data is inside the codec data, so we need to demux it ourselves -> processor load.


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #26 samsamsam

  • Senior Member
  • 2,024 posts

+146
Excellent

Posted 14 May 2019 - 20:54

@Erik Slagter

 

There are two possibility, the CC data can be sent on separate PES stream using separate PID or in the video PID in the video frame metadata called "user data".

This is problematic because as we know video frame can be out of order (B frames) and due to this CC data can be also out of order. It they are not handled by video decoder then PTS is needed to change they order before decoding.

 

 

The first thing to understand is that for EIA-608 and similar closed captioning standards, the captions are embedded directly in the video bitstream as user data. H.264 bitstreams are stored as a sequence of NAL (network abstraction layer) units. Each unit has a type; user data is stored in a NAL unit of the supplemental enhancement information (SEI) type.

 

 

Could I have request to move all posts related to CC support to new thread and there continue discussion?

 

Do not get me wrong, I do not have problem that this is thread was created by me but this discussion is out of topic and I think that it will be better to make new one.

I think "Closed caption - support"  will be good topic title, how do you think?

 

Regarding me, I unfortunately didn't have time to take closer look on this but from my experience probably the best solution will be to write some own piece of code to extract CC from video data.



Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #27 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 14 May 2019 - 21:23

Hi,

Extract of CC commands from PES reader seems to work here!

Need an CEA-608 or CEA-708 decoder.
Wavefield T90: 0.8W - 1.9E - 4.8E - 13E - 16E - 19.2E - 23.5E - 26E - 33E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916

Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #28 samsamsam

  • Senior Member
  • 2,024 posts

+146
Excellent

Posted 14 May 2019 - 21:30

@athoik

 

I wrote about solution for the exteplayer3.
 

But, anyway, please take in the account that in your solution CC data (commands) will be not in order and without PTS related to frame from where you taken CC data you will be not able to decode them correctly.


Edited by samsamsam, 14 May 2019 - 21:31.


Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #29 Erik Slagter

  • PLi® Core member
  • 46,951 posts

+541
Excellent

Posted 17 May 2019 - 16:03

BTW I don't think the out of order processing of B and other bidirectional reference frames is a big problem. Timing of subtitles doesn't need to be that exact.


* Wavefrontier T90 with 28E/23E/19E/13E via SCR switches 2 x 2 x 6 user bands
I don't read PM -> if you have something to ask or to report, do it in the forum so others can benefit. I don't take freelance jobs.
Ik lees geen PM -> als je iets te vragen of te melden hebt, doe het op het forum, zodat anderen er ook wat aan hebben.


Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #30 samsamsam

  • Senior Member
  • 2,024 posts

+146
Excellent

Posted 17 May 2019 - 18:42

@Erik Slagter

 

You do not understand. You will be not able to decode commands without PTS because they will be received in wrong order.
 
One subtitle window could be describad by more than one command received with more than one frame.
I hope you understand the problem now.


Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #31 samsamsam

  • Senior Member
  • 2,024 posts

+146
Excellent

Posted 23 May 2019 - 23:14

Hello @athoik,

 

I was checked libcaption with:

 

 

# ts2srt out.ts
01
0:00:02,551 --> 00:00:04,186
TH

02
0:00:04,186 --> 00:00:04,219
THAT

03
0:00:04,219 --> 00:00:04,252
THAT S

04
0:00:04,252 --> 00:00:04,286
THAT STR

05
0:00:04,286 --> 00:00:04,319
THAT STRIK

06
0:00:04,319 --> 00:00:04,352
THAT STRIKE

07
0:00:04,352 --> 00:00:04,386
THAT STRIKE TH

08
0:00:04,386 --> 00:00:04,419
THAT STRIKE THRE

09
0:00:04,419 --> 00:00:04,453
THAT STRIKE THREE

10
0:00:04,453 --> 00:00:04,486
THAT STRIKE THREE CA

11
0:00:04,486 --> 00:00:04,519
THAT STRIKE THREE CALL

12
0:00:04,519 --> 00:00:04,553
THAT STRIKE THREE CALLED

13
0:00:04,553 --> 00:00:04,553
THAT STRIKE THREE CALLED,

14
0:00:04,553 --> 00:00:05,020
THAT STRIKE THREE CALLED,
EX

15
0:00:05,020 --> 00:00:05,053
THAT STRIKE THREE CALLED,
EXCE

16
0:00:05,053 --> 00:00:05,087
THAT STRIKE THREE CALLED,
EXCELL

17
0:00:05,087 --> 00:00:05,120
THAT STRIKE THREE CALLED,
EXCELLEN

18
0:00:05,120 --> 00:00:05,120
THAT STRIKE THREE CALLED,
EXCELLENT

19
0:00:05,120 --> 00:00:06,555
THAT STRIKE THREE CALLED,
EXCELLENT W

20
0:00:06,555 --> 00:00:06,588
THAT STRIKE THREE CALLED,
EXCELLENT WO

21
0:00:06,588 --> 00:00:06,588
THAT STRIKE THREE CALLED,
EXCELLENT WORK

22
0:00:06,588 --> 00:00:06,588
THAT STRIKE THREE CALLED,
EXCELLENT WORK.

 

 

This looks like this closed caption should be displayed like that. This is to create the "writing" effect.

Only timings does not looks OK, but this is, a problem because this file start from 

Duration: 00:00:04.69, start: 2.651256,

So, you if you will normalize and thread that playback start from 0s not from 2.651256s then you need to make same correction in closed caption timing.

 

ccextractor looks ahead and makes some aggregation, but this is not something which we will be able to do in real time.

 

I found other small bug in libcaption in the file cea708.c

    if (!data || 7 > size) {
        return LIBCAPTION_ERROR;
    }
this should be 
 
    if (!data || 6 > size) {
        return LIBCAPTION_ERROR;
    }
 
Without this fix extraction closed captions from atsc-cea-708-dtvcc-and-cea-608.ts does not work.
 
Based on libcaption library adding closed caption support to exteplayer3 seems quite easy, but the problem is, when we should start to analyze video frames searching for closed captions?
This will affect CPU and memory usage for sure. 
So, user should decide to enable it, but on the other hand if we will not start analyze video frame then we will do not know that these subtitles are there.
 
So, maybe the closed caption track should be always exposed no matter if they are in video data or not (because we will not know if they are there or not) and we should start analize video data after selection this track by user.

Edited by samsamsam, 23 May 2019 - 23:15.


Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #32 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 24 May 2019 - 05:18

Hi SSS,


Most probably a config required like "Enable ATSC subs".

Once you set that option, user should receive the CC track, and that CC track will analyze the video when selected.

On the other hand, it can start analyzing video automatically, if there is no sign of CC header, it can exit. If there is a sign it can report this CC track.

I did some progress with ATSC subs on enigma2, but seems like PES reader returning wrong data, or parser is still wrong :(
Wavefield T90: 0.8W - 1.9E - 4.8E - 13E - 16E - 19.2E - 23.5E - 26E - 33E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916

Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #33 littlesat

  • PLi® Core member
  • 56,123 posts

+685
Excellent

Posted 24 May 2019 - 06:53

Or set a flag in ‘lamedb’ for services where you enable it... or where it is available... so it can be added to the subtitle selection screen.

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #34 samsamsam

  • Senior Member
  • 2,024 posts

+146
Excellent

Posted 25 May 2019 - 10:00

Hello @athoik,

 

Do you have more samples with CC?

Could you please provide links to such samples?

 

Best Regards,

Sam



Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #35 samsamsam

  • Senior Member
  • 2,024 posts

+146
Excellent

Posted 25 May 2019 - 13:26

I added support for CC CEA-608/EIA-708 to the exteplayer3, implementation is based on libcaption with small changes:

 

/mnt/raw/e2ibuildenv/exteplayer3/out/i686/exteplayer3_fpu_hard_ffmpeg4.1 -b 10 -9 0 /mnt/raw/cc_samples/atsc-cea-708-dtvcc-and-cea-608.ts 
{"EPLAYER3_EXTENDED":{"version":69}}
file: [file:///mnt/raw/cc_samples/atsc-cea-708-dtvcc-and-cea-608.ts]
{"PLAYBACK_OPEN":{"OutputName":"Output", "file":"file:///mnt/raw/cc_samples/atsc-cea-708-dtvcc-and-cea-608.ts", "sts":0}}
{"OUTPUT_OPEN":{"sts":0}}
{"PLAYBACK_PLAY":{"sts":0}}
{"v_c":{"id":256,"e":"V_MPEG2","n":"und","w":1280,"h":720,"f":59940,"p":-1,"an":1,"ad":1}}
{"a_l": [{"id":257,"e":"A_AC3","n":"eng"}]}
{"a_c":{"id":257,"e":"A_AC3","n":"eng"}}
{"s_l": [{"id":256,"e":"V_MPEG2","n":"ccc"}]}
{"s_f":{"r":0}}
{"s_f":{"r":0}}
{"s_s":{"id":256,"sts":0}}
{"s_c":{"id":256,"e":"V_MPEG2","n":"ccc"}}
{"s_a":{"id":256,"s":232,"e":null,"t":""}}
{"s_a":{"id":256,"s":265,"e":null,"t":"engine."}}
{"s_a":{"id":256,"s":2834,"e":null,"t":""}}
{"s_a":{"id":256,"s":2868,"e":null,"t":"There isn’t even\r\na Yugoslavia anymore!"}}
{"s_a":{"id":256,"s":4670,"e":null,"t":""}}
{"s_a":{"id":256,"s":4703,"e":null,"t":"Bring it back at once!"}}
{"s_a":{"id":256,"s":6071,"e":null,"t":""}}
{"s_a":{"id":256,"s":6104,"e":null,"t":"You’re the boss."}}
{"s_a":{"id":256,"s":8040,"e":null,"t":""}}
{"s_a":{"id":256,"s":8073,"e":null,"t":"(crashing)"}}
{"s_a":{"id":256,"s":9908,"e":null,"t":""}}
{"s_a":{"id":256,"s":9942,"e":null,"t":"(laughing)"}}
{"s_a":{"id":256,"s":11610,"e":null,"t":""}}
{"s_a":{"id":256,"s":11643,"e":null,"t":"(groaning)"}}
{"s_a":{"id":256,"s":13145,"e":null,"t":""}}
{"s_a":{"id":256,"s":13178,"e":null,"t":"(grumbling):\r\nStupid punishment."}}
{"s_a":{"id":256,"s":15113,"e":null,"t":""}}
{"s_a":{"id":256,"s":15147,"e":null,"t":"I hate hard work,\r\nunless it’s on pranks."}}
{"s_a":{"id":256,"s":17683,"e":null,"t":""}}
{"s_a":{"id":256,"s":17716,"e":null,"t":"Shiny enough to see\r\nSkinner’s ugly face."}}
{"s_a":{"id":256,"s":21086,"e":null,"t":""}}
{"s_a":{"id":256,"s":21119,"e":null,"t":"(Bart screams)"}}
{"s_a":{"id":256,"s":22287,"e":null,"t":""}}
{"s_a":{"id":256,"s":22321,"e":null,"t":"Come with me."}}
{"s_a":{"id":256,"s":23522,"e":null,"t":""}}
{"s_a":{"id":256,"s":25691,"e":null,"t":""}}
{"s_a":{"id":256,"s":25724,"e":null,"t":"I’ll grill your cheese yet, boy."}}
{"s_a":{"id":256,"s":27626,"e":null,"t":""}}
{"s_a":{"id":256,"s":27659,"e":null,"t":"You weren’t the first prankster\r\nto destroy"}}
{"s_a":{"id":256,"s":29661,"e":null,"t":""}}
{"s_a":{"id":256,"s":29695,"e":null,"t":"the car I rent from mother,\r\nand you won’t be the last."}}
{"s_a":{"id":256,"s":31530,"e":null,"t":""}}
{"s_a":{"id":256,"s":31563,"e":null,"t":"\"Rent\"?\r\nRent to own."}}
{"s_a":{"id":256,"s":33265,"e":null,"t":""}}
{"s_a":{"id":256,"s":33298,"e":null,"t":"Just 35 more payments,\r\nand it’s halfway mine."}}
{"s_a":{"id":256,"s":35100,"e":null,"t":""}}
{"s_a":{"id":256,"s":35133,"e":null,"t":"The point is, I’ve seen\r\nhooligans like you come and go."}}
{"s_a":{"id":256,"s":37903,"e":null,"t":""}}
{"s_a":{"id":256,"s":37936,"e":null,"t":"You’re all just a big blur\r\nof short pants"}}
{"s_a":{"id":256,"s":40172,"e":null,"t":""}}
{"s_a":{"id":256,"s":40205,"e":null,"t":"and sinister smiles."}}
{"s_a":{"id":256,"s":41707,"e":null,"t":""}}
{"s_a":{"id":256,"s":41740,"e":null,"t":"Well, maybe so,\r\nbutI’mthe best."}}
{"s_a":{"id":256,"s":44076,"e":null,"t":""}}
{"s_a":{"id":256,"s":44109,"e":null,"t":"(chuckles)"}}
{"s_a":{"id":256,"s":45277,"e":null,"t":""}}
{"s_a":{"id":256,"s":45310,"e":null,"t":"The best of your era, maybe."}}
{"s_a":{"id":256,"s":46912,"e":null,"t":""}}
{"s_a":{"id":256,"s":46945,"e":null,"t":"Are you saying\r\nthere was a kid who\r\nwas worse than me?"}}
{"s_a":{"id":256,"s":49247,"e":null,"t":""}}
{"s_a":{"id":256,"s":49281,"e":null,"t":"(scoffs):\r\nWay worse."}}
{"s_a":{"id":256,"s":50782,"e":null,"t":""}}
{"s_a":{"id":256,"s":50816,"e":null,"t":"Anyway, think\r\nno more about it."}}
{"s_a":{"id":256,"s":51917,"e":null,"t":""}}
{"s_a":{"id":256,"s":51950,"e":null,"t":"You’re dismissed."}}
{"s_a":{"id":256,"s":53185,"e":null,"t":""}}
{"s_a":{"id":256,"s":53218,"e":null,"t":"Wait! Wait!\r\nIf there’s someone worse,"}}
{"s_a":{"id":256,"s":54486,"e":null,"t":""}}
{"s_a":{"id":256,"s":54519,"e":null,"t":"I have to know who he is."}}
{"s_a":{"id":256,"s":55921,"e":null,"t":""}}
{"s_a":{"id":256,"s":55954,"e":null,"t":"\"He\"?"}}
{"s_a":{"id":256,"s":56989,"e":null,"t":""}}
{"s_a":{"id":256,"s":57022,"e":null,"t":"It’s a she?"}}
{"s_a":{"id":256,"s":58156,"e":null,"t":""}}
{"s_a":{"id":256,"s":58190,"e":null,"t":"Just kidding,\r\nit’s a guy."}}
{"s_a":{"id":256,"s":59825,"e":null,"t":""}}
{"s_a":{"id":256,"s":59858,"e":null,"t":"(both laughing)"}}
{"log":"Frame read error: 'End of file'"}
 

 

 

Subtitle atom has only start time (in milliseconds) it does not have end time (similar like GPS subtitles).

Only one atom can be displayed, so this mean that that the previous atom must be discarded when new one need to be displayed.

This works same as  GPS subtitles.

 

I performed some tests and it works quite good the problem is that I have only three short samples, so there could be still some bugs.

Samples are welcome, please share if you will find some samples.

 

 

Thank you,

 

Sam


Edited by samsamsam, 25 May 2019 - 13:27.


Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #36 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 25 May 2019 - 14:59

Hello @athoik,

Do you have more samples with CC?
Could you please provide links to such samples?

Best Regards,
Sam


Hi SSS,

Here is a sample from a USA friend: https://mega.nz/#!31...pfCq56SPiv6hc54

PS. Your excellent work is now only for friends and family? I seen the info on your repositories before 6 days.

I am really sorry that community abused you like this and now we all miss your work.

Anyway, good luck with your private projects.
Wavefield T90: 0.8W - 1.9E - 4.8E - 13E - 16E - 19.2E - 23.5E - 26E - 33E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916

Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #37 samsamsam

  • Senior Member
  • 2,024 posts

+146
Excellent

Posted 25 May 2019 - 15:05

Hello,

 

Thank you. I found also some samples here:

https://www.ccextrac...neral:tvsamples

 

For example:

https://drive.google...eU5rOTlCMWxKbW8

 


PS. Your excellent work is now only for friends and family? I seen the info on your repositories before 6 days.

 

Regarding the CC patch for the exteplayer3 I will put it here when I perform some tests.

 

But when I test 

https://drive.google...eU5rOTlCMWxKbW8



Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #38 samsamsam

  • Senior Member
  • 2,024 posts

+146
Excellent

Posted 25 May 2019 - 15:14

This sample looks OK:

/mnt/raw/e2ibuildenv/exteplayer3/out/i686/exteplayer3_fpu_hard_ffmpeg4.1 -b 10 -9 0 /mnt/raw/cc_samples/20190504\ 2216\ -\ 11-4\ Quest__\ -\ Killer\ Whales.ts 
{"EPLAYER3_EXTENDED":{"version":69}}
file: [file:///mnt/raw/cc_samples/20190504 2216 - 11-4 Quest__ - Killer Whales.ts]
TermThreadFun bind error: Address already in use
{"PLAYBACK_OPEN":{"OutputName":"Output", "file":"file:///mnt/raw/cc_samples/20190504 2216 - 11-4 Quest__ - Killer Whales.ts", "sts":0}}
{"OUTPUT_OPEN":{"sts":0}}
{"PLAYBACK_PLAY":{"sts":0}}
{"v_c":{"id":97,"e":"V_MPEG2","n":"und","w":720,"h":480,"f":29970,"p":-1,"an":32,"ad":27}}
{"a_l": [{"id":100,"e":"A_AC3","n":"eng"}]}
{"a_c":{"id":100,"e":"A_AC3","n":"eng"}}
{"s_l": [{"id":97,"e":"V_MPEG2","n":"ccc"}]}
{"s_f":{"r":0}}
{"s_f":{"r":0}}
{"s_s":{"id":97,"sts":0}}
{"s_c":{"id":97,"e":"V_MPEG2","n":"ccc"}}
{"s_a":{"id":97,"s":2168,"e":null,"t":""}}
{"s_a":{"id":97,"s":0,"e":null,"t":"Narrator:\r\nAS MEL RELEASES THE PUP,"}}
{"s_a":{"id":97,"s":8608,"e":null,"t":""}}
{"s_a":{"id":97,"s":8641,"e":null,"t":"IT MAKES A BREAK FOR IT."}}
{"s_a":{"id":97,"s":10710,"e":null,"t":""}}
{"s_a":{"id":97,"s":8641,"e":null,"t":"SCIENTISTS CAN ONLY GUESS"}}
{"s_a":{"id":97,"s":18118,"e":null,"t":""}}
{"s_a":{"id":97,"s":18151,"e":null,"t":"WHY ORCAS SEEM TO PLAY\r\nWITH THEIR FOOD."}}
{"s_a":{"id":97,"s":22055,"e":null,"t":""}}
{"s_a":{"id":97,"s":18151,"e":null,"t":"PERHAPS MEL IS TEACHING SOL\r\nHOW TO HUNT."}}
{"s_a":{"id":97,"s":29462,"e":null,"t":""}}
{"s_a":{"id":97,"s":18151,"e":null,"t":"OR MAYBE\r\nTHEY’RE JUST HAVING FUN."}}
{"s_a":{"id":97,"s":35835,"e":null,"t":""}}
{"s_a":{"id":97,"s":18151,"e":null,"t":"ONCE THEY’VE FINISHED EATING,"}}
{"s_a":{"id":97,"s":42976,"e":null,"t":""}}
{"s_a":{"id":97,"s":43009,"e":null,"t":"GIANT PETRELS HELP THEMSELVES\r\nTO THE LEFTOVERS."}}
{"s_a":{"id":97,"s":47147,"e":null,"t":""}}
{"s_a":{"id":97,"s":43009,"e":null,"t":"[ BELLOWING ]"}}
{"s_a":{"id":97,"s":52352,"e":null,"t":""}}
{"s_a":{"id":97,"s":52385,"e":null,"t":"BUT THEIR GOOD LUCK\r\nIS A MOTHER’S WORST NIGHTMARE."}}
{"s_a":{"id":97,"s":56423,"e":null,"t":""}}
{"s_a":{"id":97,"s":56456,"e":null,"t":"[ BELLOWING ]"}}
{"s_a":{"id":97,"s":60427,"e":null,"t":""}}
{"s_a":{"id":97,"s":60460,"e":null,"t":"Visser: YOU SEE THE MOTHER,"}}
{"s_a":{"id":97,"s":61761,"e":null,"t":""}}
{"s_a":{"id":97,"s":61795,"e":null,"t":"AND SHE’LL BY CALLING OUT\r\nFOR THE PUP,"}}
{"s_a":{"id":97,"s":63696,"e":null,"t":""}}
{"s_a":{"id":97,"s":63730,"e":null,"t":"AND SHE’LL GO AND WANDER\r\nUP AND DOWN THE BEACH,"}}
{"s_a":{"id":97,"s":66466,"e":null,"t":""}}
{"s_a":{"id":97,"s":66499,"e":null,"t":"SOMETIMES FOR HOURS ON END,"}}
{"s_a":{"id":97,"s":68034,"e":null,"t":""}}
{"s_a":{"id":97,"s":68068,"e":null,"t":"JUST CALLING OUT FOR HER PUP,"}}
{"s_a":{"id":97,"s":69669,"e":null,"t":""}}
{"s_a":{"id":97,"s":69702,"e":null,"t":"AND IT’S REALLY HEART-WRENCHING,"}}
{"s_a":{"id":97,"s":71137,"e":null,"t":""}}
{"s_a":{"id":97,"s":71171,"e":null,"t":"BUT YOU’VE GOT TO UNDERSTAND"}}
{"s_a":{"id":97,"s":72639,"e":null,"t":""}}
{"s_a":{"id":97,"s":72672,"e":null,"t":"THAT THIS IS THE NATURAL WORLD\r\nHAPPENING,"}}
{"s_a":{"id":97,"s":74607,"e":null,"t":""}}
{"s_a":{"id":97,"s":74641,"e":null,"t":"AND THE ORCA HAVE TO EAT,\r\nAS WELL."}}
{"s_a":{"id":97,"s":77043,"e":null,"t":""}}
{"s_a":{"id":97,"s":77077,"e":null,"t":"[ BELLOWING ]"}}
{"s_a":{"id":97,"s":81314,"e":null,"t":""}}
{"s_a":{"id":97,"s":77077,"e":null,"t":"Narrator: MEL IS TEACHING\r\nHIS HUNTING TECHNIQUE"}}
{"s_a":{"id":97,"s":97130,"e":null,"t":""}}
{"s_a":{"id":97,"s":97163,"e":null,"t":"TO THE YOUNGSTERS IN HIS FAMILY,"}}
{"s_a":{"id":97,"s":99833,"e":null,"t":""}}
{"s_a":{"id":97,"s":99866,"e":null,"t":"AN ADVANTAGE\r\nTHEY HAVE OVER THE SEA LIONS."}}
{"s_a":{"id":97,"s":102836,"e":null,"t":""}}
{"s_a":{"id":97,"s":99866,"e":null,"t":"THE ORCA’S ABILITY TO INNOVATE\r\nAND PASS ON ACQUIRED KNOWLEDGE,"}}
{"s_a":{"id":97,"s":109409,"e":null,"t":""}}
{"s_a":{"id":97,"s":109442,"e":null,"t":"ESPECIALLY TO THEIR YOUNG,"}}
{"s_a":{"id":97,"s":111377,"e":null,"t":""}}
{"s_a":{"id":97,"s":111411,"e":null,"t":"HAS HELPED THEM THRIVE\r\nIN ALL THE SEAS OF THE WORLD."}}
{"s_a":{"id":97,"s":115048,"e":null,"t":""}}
{"s_a":{"id":97,"s":115081,"e":null,"t":"[ CAMERA SHUTTER CLICKING ]"}}
{"s_a":{"id":97,"s":116883,"e":null,"t":""}}
{"s_a":{"id":97,"s":116916,"e":null,"t":"Visser: IT DOESN’T MATTER\r\nWHERE YOU GO IN THE WORLD,"}}
{"s_a":{"id":97,"s":119419,"e":null,"t":""}}
{"s_a":{"id":97,"s":119452,"e":null,"t":"ORCA HUNT DIFFERENTLY."}}
{"s_a":{"id":97,"s":121387,"e":null,"t":""}}
{"s_a":{"id":97,"s":121421,"e":null,"t":"IF YOU HAVE DIFFERENT TYPES\r\nOF FOOD THAT YOU EAT,"}}
{"s_a":{"id":97,"s":124657,"e":null,"t":""}}
{"s_a":{"id":97,"s":124691,"e":null,"t":"THEN YOU NEED TO HAVE DIFFERENT\r\nSTRATEGIES ON HOW YOU HUNT"}}
{"s_a":{"id":97,"s":127961,"e":null,"t":""}}
{"s_a":{"id":97,"s":127994,"e":null,"t":"AND, BECAUSE THE PREY\r\nIS DIFFERENT,"}}
{"s_a":{"id":97,"s":129762,"e":null,"t":""}}
{"s_a":{"id":97,"s":129796,"e":null,"t":"YOU’VE GOT TO WORK AROUND THAT"}}
{"s_a":{"id":97,"s":132098,"e":null,"t":""}}
{"s_a":{"id":97,"s":132132,"e":null,"t":"AND COME UP\r\nWITH DIFFERENT SOLUTIONS."}}
{"s_a":{"id":97,"s":134367,"e":null,"t":""}}
{"s_a":{"id":97,"s":134400,"e":null,"t":"SO, YEAH, YOU’VE GOT TO BE\r\nA SMART PREDATOR TO BE AN ORCA."}}
{"s_a":{"id":97,"s":137770,"e":null,"t":""}}
{"s_a":{"id":97,"s":137804,"e":null,"t":"Narrator:\r\nORCAS AROUND THE WORLD"}}
{"s_a":{"id":97,"s":140707,"e":null,"t":""}}
{"s_a":{"id":97,"s":140740,"e":null,"t":"ARE VERSATILE\r\nAND CREATIVE HUNTERS."}}
{"s_a":{"id":97,"s":144010,"e":null,"t":""}}
{"s_a":{"id":97,"s":144043,"e":null,"t":"THEY HAVE THE ABILITY TO ADAPT\r\nTO ANY PREY THEY DESIRE --"}}
{"s_a":{"id":97,"s":148882,"e":null,"t":""}}
{"s_a":{"id":97,"s":148915,"e":null,"t":"EVEN ONE JUST AS FAST\r\nAND INTELLIGENT AS THEY ARE."}}
{"s_a":{"id":97,"s":154020,"e":null,"t":""}}
{"log":"Frame read error: 'End of file'"}


Re: exteplayer3 - support for the embedded PGS (Presentation Graphic Stream) subtitle format #39 Persian Prince

  • Senior Member
  • 1,982 posts

+247
Excellent

Posted 26 May 2019 - 00:25

 

Hello @athoik,

Do you have more samples with CC?
Could you please provide links to such samples?

Best Regards,
Sam


Hi SSS,

Here is a sample from a USA friend: https://mega.nz/#!31...pfCq56SPiv6hc54

PS. Your excellent work is now only for friends and family? I seen the info on your repositories before 6 days.

I am really sorry that community abused you like this and now we all miss your work.

Anyway, good luck with your private projects.

 

 

Just for information we do mirror related projects and we accept PRs and contributors:

 

https://github.com/O...2iplayer-for-e2 (with Travis CI)

 

https://github.com/OpenVisionE2/e2ibox

 

https://github.com/OpenVisionE2/hlsdl

 

https://github.com/O...nE2/exteplayer3

 

https://github.com/O...E2/e2isubparser

 

I wish better days for SSS, he's a real professional.


Open Vision sources: https://github.com/OpenVisionE2



0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users