I believe the wrong field is being used for the subtitle "Content". Here's an example for a dvd with 9 subtitle streams:
$ shrip list --device=dvd/VIDEO_TS --title=1 --subtitles Title: 01, Length: 02:11:55, Chapters: 16, Audio streams: 05, Subpictures: 09 Subtitle: 01, Language: en, Content: Undefined Subtitle: 02, Language: en, Content: Undefined Subtitle: 03, Language: zh, Content: Undefined Subtitle: 04, Language: zh, Content: Undefined Subtitle: 05, Language: fr, Content: Undefined Subtitle: 06, Language: ko, Content: Undefined Subtitle: 07, Language: es, Content: Undefined Subtitle: 08, Language: th, Content: Undefined Subtitle: 09, Language: fr, Content: Undefined
Notice the "Content" field is Undefined for all streams.
For comparison, here's similar output using lsdvd:
$ lsdvd -qst1 dvd/VIDEO_TS Title: 01, Length: 02:11:55.066 Chapters: 16, Cells: 17, Audio streams: 05, Subpictures: 09 Subtitle: 01, Language: en - English, Content: Normal, Stream id: 0x20, Subtitle: 02, Language: en - English, Content: Normal_CC, Stream id: 0x21, Subtitle: 03, Language: zh - Chinese, Content: Normal, Stream id: 0x22, Subtitle: 04, Language: zh - Chinese, Content: Normal, Stream id: 0x23, Subtitle: 05, Language: fr - Francais, Content: Normal, Stream id: 0x24, Subtitle: 06, Language: ko - Korean, Content: Normal, Stream id: 0x25, Subtitle: 07, Language: es - Espanol, Content: Normal, Stream id: 0x26, Subtitle: 08, Language: th - Thai, Content: Normal, Stream id: 0x27, Subtitle: 09, Language: fr - Francais, Content: Undefined, Stream id: 0x28,
Notice all subtitles (except 9) contain some kind of "Content".
After poking around in the code for a bit I found ogmdvd-disc.c (line 341 - version 1.0.1) is using the "lang_extension" attribute and I think it should be using the "code_extension" attribute. I think that for 3 reason;
After a little code change, here's what I see:
$ LD_LIBRARY_PATH=ogmrip-1.0.1-subp/libogmdvd/.libs shrip list --device=dvd/VIDEO_TS --title=1 --subtitles Title: 01, Length: 02:11:55, Chapters: 16, Audio streams: 05, Subpictures: 09 Subtitle: 01, Language: en, Content: Normal Subtitle: 02, Language: en, Content: Normal_CC Subtitle: 03, Language: zh, Content: Normal Subtitle: 04, Language: zh, Content: Normal Subtitle: 05, Language: fr, Content: Normal Subtitle: 06, Language: ko, Content: Normal Subtitle: 07, Language: es, Content: Normal Subtitle: 08, Language: th, Content: Normal Subtitle: 09, Language: fr, Content: Undefined
I haven't done much research on the difference between lang_extension and code_extension, so I don't know if that's always the case. I did check about a dozen dvds I have and in all cases when there was some kind of content, the modified version of ogmdvd-disc.c, displayed the same information as lsdvd, whereas the unmodified version ALWAYS showed "undefined".
Here's a couple links to some dvd info that might be useful in determining if one or the other should be used:
And looking in the libdvdread source (src/dvdread/ifo_types.h) I found this comment:
/* * type: 0 not specified * 1 language * 2 other * coding mode: 0 run length * 1 extended * 2 other * language: indicates language if type == 1 * lang extension: if type == 1 contains the lang extension */
I don't know exactly what that means, but thought it MIGHT mean "lang_extension" should be used if type == 1 and code_extension should be used otherwise. But that's just a wild guess.
If the simple solution (just use code_extension) is the way to go, then the attached patch (subp.patch) should do the trick. It changes lang_extension to code_extension in the following 3 files: