TiVo Community Forum banner

Threads that asking for Closed Caption in TiVoToGo

12595 Views 61 Replies 19 Participants Last post by  jmemmott
Here I compile the threads on the forum asking for the support of Closed Caption ( CC ) in TiVoToGo (TiVo2Go, TTG ...)

Search 1, Search 2.

Frankly speaking, I am quite disappointed by the fact that the released TTG is lacking of this important feature. It's hard to believe that all the developers at TiVo, and all the beta testers missed out this feature to let the end consumers find out by themselves as a bonus surprise. :eek:

A full solution on this issue might be complicated, difficult, or involved, that I don't know; but without a word from TiVo regarding this issue is not very satisfying. They at least had informed Mac users that there wouldn't be Mac support immediately in the first release of TTG .... :rolleyes:

What makes it worse is that, just now I was trying to write an email to TiVo, and only found out that they don't have an email support. Guess I will rely on either TIVoBill here to forward my comments, or make a phone call myself next week.
1 - 20 of 62 Posts
jushen1,

My understanding is that CC data is stored in the video files transfered using the TiVoToGo software. The problem is that there is no standard for where the CC data is to be stored in an MPEG2 file, so the codecs that display MPEG2 video vary widely in where they look for the CC data. Because of this, some (perhaps many of them) will not be able to display the CC data. It would be helpful if any of the forum participants can chime in on which codecs are and are not able to display CC data on a program transferred using TiVoToGo.
In DVD authoring, I find that software requires that for closed captioning the user provide a "Line 21" file containing the CC data. And it can only be present on Region 1 disks. Some Region 1 DVD players don't even support Line 21 closed captions on playback. From what research I've been able to do so far, it goes in the MPEG-2 stream in "user data" fields.

MacCaption, a program that can generate line 21 data on a Mac for DVD mastering, costs from $3,995 to $5,995 depending on the feature set, so even if you could get TiVoVBI to generate the data with timecodes, the software needed to turn it into line 21 data for real closed captions on a DVD isn't worth the expense for non-studios, who tend to have a legal mandate and the budget for it.

I've yet to see a DVD player on a computer that displays them, but I haven't done any real testing of it. I wouldn't know of any codecs that would open them.
In a similar vein, as far as I know, WMP 9 and 10 require external SAMI (Synchronized Accessible Media Interchange) files to do closed captioning if you want to play multimedia files rather than the TV data stream :

"SAMI files are text files that have an .smi or .sami file name extension. They contain the text strings used for synchronized closed captions, subtitles, and audio descriptions. They also specify the timing parameters used by the Windows Media Player control to synchronize closed caption text with audio or video content. When a digital media file reaches a time designated in the SAMI file, the text changes accordingly in the closed caption display area of the Web page."

"SAMI files exist independently from digital media files and do not rely on a specific video or audio format to function. Since the files are separate, the Windows Media Player control will locate, parse, synchronize, and render each file on the client's computer. This provides for added flexibility and functionality because it allows for the editing of individual SAMI files, the incorporation of the SAMI file with different digital media formats, and the storage of SAMI files on different server locations."

I don't see anything in the Tivo DirectShow filter graph that is capable of extracting the data from the MPEG file and converting it to the required SAMI stream.
See less See more
Closed caption when sent via broadcast is in the blank area above the picture (as white dashes on a black background). I did notice on the .tivo files, that at least part of this blank area is visable, and appears to have the blinking white dashes that the CC data is stored in. I can't tell for sure if it is all there, because I don't know more about the CC format, I'm just the bearer of trivia.
TiVoBill said:
jushen1,

My understanding is that CC data is stored in the video files transfered using the TiVoToGo software. The problem is that there is no standard for where the CC data is to be stored in an MPEG2 file, so the codecs that display MPEG2 video vary widely in where they look for the CC data.
Yup. DVD, SVCD, TiVo, and ATSC all have their own `standards' for encoding CC data. (Standards---so many to choose from!)

The relevant ones look something like this:

TiVo stores CC data in the user data area of each MPEG picture (frame), with tag byte 0xcc (field 1?) or 0xbb (field 2?), a length byte (0x02), and the actual data (including parity bit). Source: foo.tivo file recorded and transferred a few minutes ago.

DVD stores CC data in the user data area of the GOP, like so:
Code:
header: 0x43 0x43 0x01 0xf8
length: 7 bits (high order bit indicates whether field 1 or field 2 comes first
  (I think; I don't believe I have a DVD with anything in field 2.
  Should try making one, I suppose.)
[i]length[/i] packets of data:
  0xff and two bytes of CC data
The fields appear to alternate.
Source: a commercial DVD (can you spot it? ;-) .

Sorry if that's not very clear, but I can provide code to illustrate. Output looks like so:
Code:
$ ./find_pictures </var/tmp/vts_01_\([0xE0]_Video_NTSC_720x480\)_1.m2v\
>  | head -n176 | tail +146         
0xb8 (GOP)
0xb2   (user_data:
         type 0x43 0x43 0x01 0xf8 (DVD closed captions):
            0xff 0x45 0x20 (E )            0xfe 0x00 0x00 (..)
            0xff 0xd3 0x45 (SE)            0xfe 0x00 0x00 (..)
            0xff 0xc1 0x4c (AL)            0xfe 0x00 0x00 (..)
            0xff 0x20 0x4f ( O)            0xfe 0x00 0x00 (..)
            0xff 0x46 0x20 (F )            0xfe 0x00 0x00 (..)
            0xff 0x52 0xc1 (RA)            0xfe 0x00 0x00 (..)
            0xff 0xd3 0xd3 (SS)            0xfe 0x00 0x00 (..)
            0xff 0x49 0x4c (IL)            0xfe 0x00 0x00 (..)
            0xff 0x4c 0x4f (LO)            0xfe 0x00 0x00 (..)
            0xff 0xce 0xae (N.)            0xfe 0x00 0x00 (..)
            0xff 0x94 0x2c (.,)            0xfe 0x00 0x00 (..)
            0xff 0x94 0x2c (.,)            0xfe 0x00 0x00 (..)
            0xff 0x94 0x2f (./)            0xfe 0x00 0x00 (..)
0x00   (picture: I)
0x00   (picture: P)
0x00   (picture: B)
0x00   (picture: B)
0x00   (picture: P)
0x00   (picture: B)
0x00   (picture: B)
0x00   (picture: P)
0x00   (picture: B)
0x00   (picture: B)
0x00   (picture: P)
0x00   (picture: B)
0x00   (picture: B)
0xb8 (GOP)
0xb2   (user_data:
Code:
[email protected]:~/stl2cc$ ./find_pictures </var/tmp/Faking\ It\ -\ \'\'Choir\ Girl\
> \ to\ Rock\ Chick\'\'\ \(Recorded\ Feb\ 27,\ 2005,\ BBCA\).TiVo\
> | head -n 1847 | tail -n165
0xb8 (GOP)
0x00   (picture: I)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x80 0x80 (..))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x20 0xb5 ( 5))
         type 0x00
0xb2   (user_data:
         type 0x47, length(?) 0x41)
         type 0x39, length(?) 0x34)
         type 0x03, length(?) 0x42)
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x80 0x80 (..))
         type 0xbb (TiVo closed captions), length 0x02, payload 0xba 0x20 (: ))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x80 0x80 (..))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x45 0xd0 (EP))
         type 0x00
0x00   (picture: P)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x80 0x80 (..))
         type 0xbb (TiVo closed captions), length 0x02, payload 0xae 0x20 (. ))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x80 0x80 (..))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x32 0x20 (2 ))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x80 0x80 (..))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x43 0xc8 (CH))
         type 0x00
0x00   (picture: P)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x80 0x80 (..))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x4f 0x49 (OI))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x80 0x80 (..))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x8f 0xc1 (.A))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x80 0x80 (..))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x01 0x85 (..))
         type 0x00
0x00   (picture: P)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x94 0x20 (. ))
         type 0xbb (TiVo closed captions), length 0x02, payload 0xc8 0x45 (HE))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x94 0xd0 (.P))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x8f 0x5e (.^))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x49 0x20 (I ))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x85 0x02 (..))
         type 0x00
0x00   (picture: P)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x54 0xc8 (TH))
         type 0xbb (TiVo closed captions), length 0x02, payload 0xc2 0xc2 (BB))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x49 0xce (IN))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x43 0x45 (CE))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0xcb 0x20 (K ))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x8f 0x5e (.^))
         type 0x00
0xb8 (GOP)
0x00   (picture: I)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x49 0xa7 (I'))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x85 0x01 (..))
         type 0x00
0xb2   (user_data:
         type 0x47, length(?) 0x41)
         type 0x39, length(?) 0x34)
         type 0x03, length(?) 0x42)
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0xc4 0x20 (D ))
         type 0xbb (TiVo closed captions), length 0x02, payload 0xc2 0xc2 (BB))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x4a 0x4f (JO))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x43 0x80 (C.))
         type 0x00
0x00   (picture: P)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x49 0xce (IN))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x8f 0xa4 (.$))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x20 0x54 ( T))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x01 0x02 (..))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0xc8 0x49 (HI))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x40 0xc1 (@A))
         type 0x00
0x00   (picture: P)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0xd3 0x20 (S ))
         type 0xbb (TiVo closed captions), length 0x02, payload 0xea 0x40 ([email protected]))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x43 0x4c (CL))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x8f 0x43 (.C))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0xd5 0xc2 (UB))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x01 0x85 (..))
         type 0x00
0x00   (picture: P)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x20 0xd3 ( S))
         type 0xbb (TiVo closed captions), length 0x02, payload 0xc8 0x45 (HE))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x45 0xd6 (EV))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x8f 0x5e (.^))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x45 0xce (EN))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x01 0x83 (..))
         type 0x00
0x00   (picture: P)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x94 0xf4 (.t))
         type 0xbb (TiVo closed captions), length 0x02, payload 0x46 0xc1 (FA))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x49 0x46 (IF))
         type 0xbb (TiVo closed captions), length 0x02, payload 0xcb 0x49 (KI))
         type 0x00
0x00   (picture: B)
0xb2   (user_data:
         type 0xcc (TiVo closed captions), length 0x02, payload 0x20 0x54 ( T))
         type 0xbb (TiVo closed captions), length 0x02, payload 0xce 0xc7 (NG))
         type 0x00
0xb8 (GOP)
0x00   (picture: I)
0xb2   (user_data:
Because of this, some (perhaps many of them) will not be able to display the CC data. It would be helpful if any of the forum participants can chime in on which codecs are and are not able to display CC data on a program transferred using TiVoToGo.
Perhaps the CC data could be transcoded from TiVo-style to DVD-style within the TiVo DirectShow Source Filter?
See less See more
dah31 said:
Perhaps the CC data could be transcoded from TiVo-style to DVD-style within the TiVo DirectShow Source Filter?
That is the current line of investigation that the TiVo Desktop development folks are following. They hope to be able to provide the CC data through the DirectShow filter in the future, which would alow it be displayed in any program that can use DirectShow filters.
dah31 said:
TiVo stores CC data in the user data area of each MPEG picture (frame), with tag byte 0xcc (field 1?) or 0xbb (field 2?), a length byte (0x02), and the actual data (including parity bit). Source: foo.tivo file recorded and transferred a few minutes ago.
Thank You. This was the final final key I needed to make complete sense of the program stream and CC data with respect to the .tivo file.

On a side note I am inclined to support/pursue a SAMI solution rather than the DVD option. Microsoft's SAMI (Synchronized Accessible Media Interchange) standard will allow captioning of any digital multimedia file. SAMI is based on HTML, and is expected to include everything currently in EIA-608 (Line 21 analog TV CC) and EIA-708 ( HDTV and DTV CC ). Additionally, the Society of Motion Picture/Television Engineers (SMPTE) is finalizing a standard for the interchange of captions between different systems. It appears at this time that the SAMI format will also be the basis of this SMPTE standard.

If the Tivo CC data can converted into the SAMI format, developers will have a single multimedia standard to work with and can likely be encouraged to support this capability in a wide range of products. In the meantime, SAMI is already supported in WMP. As soon as SAMI files can be created from a .tivo file, they can be played back on the computer with captioning – not all the way to the goal, but a good first step.
See less See more
dah31 said:
TiVo stores CC data in the user data area of each MPEG picture (frame), with tag byte 0xcc (field 1?) or 0xbb (field 2?), a length byte (0x02), and the actual data (including parity bit). Source: foo.tivo file recorded and transferred a few minutes ago.
A follow up: I have been able to incorporate this information into some C++ code I had already started. The result was successful. I now can process a 30 minute “best” quality .tivo file and extract the CC data to a SAMI file in about 30 – 45 seconds. Viewing with WMP is still a little rough but the issues are text visibility and synchronization not with getting the process to work. These constitute user preference tuning issues, SAMI style settings, etc. and should be fairly straightforward to work out.

Provided the powers that be don’t take exception, I will try to make an extraction utility available to anyone that wants it a soon as I am comfortable with the code stability and have worked out a distribution mechanism. This path does not rely on Codecs. It feeds the CC data in through a separate WMP parser so it should work with any Codec or decoder that works with a .tivo file.

For anyone that might be inclined to express concern about what I am doing and taking about in this forum: to accomplish this, I am parsing the program stream to extract the presentation time stamps from the GOP and frame headers, I also have to extract the closed captioning text and CC control codes from the user data. That is all. In particular, I am not parsing audio packets, video slices or macroblocks. As a result, the encryption protecting the copyrighted content is safe and uncompromised.
See less See more
Thanks so much for your work in decoding the SAMI file! I am very interested in getting extraction utility so my wife can "hear" the Tivotogo, otherwise it is Tivonogo for her, smile.

Another fellow developed has a set of tools called the scctools for working with closed captions. His tools are supposed to work successfully at decoding ReplayTV mpeg files. I tried using them on the Tivo mpeg and managed to get parts of the captions with time code, but not all of them, and not in order. Another program that allows for manipulating subtitles such as sami files is Subtitle workshop. This program also allows for converting from Sami to many other file formats.

Both are open to public use, thanks to the generosity of the authors.

Would also be nice if we could have a utility for directly "burning" Tivotogo to DVD and still get closed captions.

Thanks to all those that are working on making this a reality, hopefully a painless one, smile.

Sincerely,
smithcferg
Here is a way that you can ask for this feature, using the additionall feature request form:
http://research.tivo.com/suggestions/
smithcferg said:
Thanks so much for your work in decoding the SAMI file! I am very interested in getting extraction utility so my wife can "hear" the Tivotogo, otherwise it is Tivonogo for her, smile.
If you want to try to work with what I have, I think it is far enough along that it is safe to do so. I still have some issues with responsiveness of the UI during the closed caption extraction which makes it hard to stop until it finishes the files you have selected. In a few instances, some of the captioning control codes aren’t being handled correctly but the program is basically working. I don’t use closed captioning very much so I don’t have a good feel for all of the usability nuances: visibility, synchronization, etc. Additionally, since I developed it, it works well for me and I have no installation/removal problems – I don’t know if that will hold for anyone else

I intend to make the program available to those that want it as freeware and would appreciate any comments people that do use closed captioning a lot have to make about it.

The processing of closed captioning information takes place in parallel with the audio and video processing so you must have .tivo playback working on your computer with Windows Media Player 9 or 10. The closed captioning will neither improve nor degrade the current playback experience. This version of the program has no applicability to the burning and playback of DVDs. Maybe later, but not now.

If you want to help, you can download the program installer from my web page : http://shinnyo.com/t2sami/default.htm. I can’t recommend wholesale downloading at this time. The program is not ready for mass distribution and it will ONLY be of use to people that want to watch closed captioning with Windows Media Player.

I believe closed captioning is important and would appreciate the assistance of other who believe the same and have experience I lack. Please bring any comments or opinions back to this forum for open discussion.

Thanks.
See less See more
That is most excellent work. My (soon to be) sister-in-law is near-deaf and she will appreciate your efforts immensely. If we wanted to send you some token of appreciation, would you accept some form of donation(cash via paypal or gifts from amazon wishlist, etc)? I fully realize you're developing in your spare time, and that a donation wouldn't entitle somone to any special support or consideration, I just think it would be a nice way to say thank you.
gonzotek said:
That is most excellent work. My (soon to be) sister-in-law is near-deaf and she will appreciate your efforts immensely. If we wanted to send you some token of appreciation, would you accept some form of donation(cash via paypal or gifts from amazon wishlist, etc)? I fully realize you're developing in your spare time, and that a donation wouldn't entitle somone to any special support or consideration, I just think it would be a nice way to say thank you.
Thank you for the sentiment. It is always rewarding when one's efforts are acknowledged but mixing material things with something that (for practical reasons if no other) has to remain a gift gets messy. So take it in the spirit given : a contribution I happen to be able to make to the TiVo community.
Wow! This is huge. I tried it out just now on a sample ten minute file and it worked flawlessly. I did enable the wmp player 9 as per instructions, don't know yet why the captions didn't play (I do have an extra captioning plug-in installed in the wmp which might have caused problems.) When I tried it in another free-for-use movie player, the subtitles showed up beautifully.

You have done a great service for the deaf community, even more awesome, you are working on improving it even more.

Tivotogo for all!

Thanks again.

Sincerely,
smithcferg
jmemmott said:
Thank you for the sentiment. It is always rewarding when one's efforts are acknowledged but mixing material things with something that (for practical reasons if no other) has to remain a gift gets messy. So take it in the spirit given : a contribution I happen to be able to make to the TiVo community.
You are truly one of the most generous people I've ever encountered online or offline. Thank you very, very much.
Could you please post the source code to your utility?

I'd like to port it to Linux/MacOS X.
Thanks so much for your time and efforts to make this accessible to the hard of hearing/deaf community.

i wanted to make sure i've done everything correctly; i'm unable to see the captions. i downloaded the program and followed the directions. turned on closed captioning on WMP10 as well, but not getting any captioning (programs are definitely captioned, "Oprah Winfrey"). Am i missing something?

Thanks!
mstylady2 said:
i wanted to make sure i've done everything correctly; i'm unable to see the captions. i downloaded the program and followed the directions. turned on closed captioning on WMP10 as well, but not getting any captioning (programs are definitely captioned, "Oprah Winfrey"). Am i missing something?
To narrow it down, look in the directory with your .tivo files after you run the conversion program. (The Tivo Desktop has a directory icon at the bottom of the "Now Playing" window that will show you where this is and open the directory in a new window. For every .tivo file you converted, there should be a matching .smi file with the same basic file name. These are just text files - open one in WordPad ( Right click, Open With..., Choose Program..., WordPad ). It should be a long file made up mostly of lines like the following :

<SYNC Start=66598>

THAT WILL NOT GIVE THEM A
<SYNC Start=68233>

MAJORITY IN THE TRANSITIONAL
<SYNC Start=70936>

NATIONAL ASSEMBLY, IT DOES GIVE
<SYNC Start=72370>

THEM A GREAT DEAL OF POWER IN
<SYNC Start=73538>

DETERMINING THE NEXT GOVERNMENT
<SYNC Start=74339>

AND WHO WILL RUN THE

If you are getting these files, you have extracted the CC text from the .tivo files and we need to focus on WMP 10 and why it isn't showing it to you. If you aren't getting these files, we need to look at what is happening with my program.

Let me know which it is and we will try to go from there.
See less See more
jmemmott,

when opening the directory on tivo desktop, i see only four files

Two Real Player
Two WMP

both with the Oprah Winfrey recording noted.

the WMP indicates "movie clip"
the Real Player indicates "SMIL Document"

I have not used the Real Player to playback any TiVo recordings.

Let me know what you think it may be.

Thanks,
Juanita
See less See more
1 - 20 of 62 Posts
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top