DVDGetSubchannelLanguage() implementation
Seth Kingsley <[email protected]> Wed, 28 Jul 2004 07:27:45 -0700
| Newsgroups | gmane.comp.video.ogle.devel |
|---|---|
| Message-ID | <[email protected]> |
Index: ogle/dvdcontrol.c
===================================================================
RCS file: /cvsroot/ogle/ogle/ogle/dvdcontrol.c,v
retrieving revision 1.63
diff -u -d -p -r1.63 dvdcontrol.c
--- ogle/dvdcontrol.c 10 Aug 2003 21:15:07 -0000 1.63
+++ ogle/dvdcontrol.c 28 Jul 2004 14:22:42 -0000
@@ -959,7 +959,35 @@ DVDResult_t DVDGetSubpictureLanguage(DVD
DVDSubpictureStream_t StreamNr,
DVDLangID_t *const Language)
{
- return DVD_E_NotImplemented;
+ MsgEvent_t ev;
+ int32_t serial;
+ ev.type = MsgEventQDVDCtrl;
+ DVD_SETSERIAL(nav, ev.dvdctrl.cmd);
+ serial = ev.dvdctrl.cmd.any.serial;
+ ev.dvdctrl.cmd.type = DVDCtrlGetSubpictureLanguage;
+ ev.dvdctrl.cmd.subpicturelanguage.streamnr = StreamNr;
+
+ if(MsgSendEvent(nav->msgq, nav->client, &ev, 0) == -1) {
+ return DVD_E_FailedToSend;
+ }
+
+ while(1) {
+ if(MsgNextEvent(nav->msgq, &ev) == -1) {
+ return DVD_E_Unspecified;
+ }
+ if((ev.type == MsgEventQDVDCtrl) &&
+ (ev.dvdctrl.cmd.type == DVDCtrlRetVal) &&
+ (ev.dvdctrl.cmd.retval.serial == serial)) {
+ return ev.dvdctrl.cmd.retval.val;
+ }
+ if((ev.type == MsgEventQDVDCtrl) &&
+ (ev.dvdctrl.cmd.type == DVDCtrlSubpictureLanguage)) {
+ if(ev.dvdctrl.cmd.subpictureattributes.streamnr == StreamNr) {
+ *Language = ev.dvdctrl.cmd.subpicturelanguage.langid;
+ return DVD_E_Ok;
+ }
+ }
+ }
}
Index: ogle/dvdevents.h
===================================================================
RCS file: /cvsroot/ogle/ogle/ogle/dvdevents.h,v
retrieving revision 1.33
diff -u -d -p -r1.33 dvdevents.h
--- ogle/dvdevents.h 23 Feb 2003 17:45:38 -0000 1.33
+++ ogle/dvdevents.h 28 Jul 2004 14:22:43 -0000
@@ -93,6 +93,8 @@ typedef enum {
DVDCtrlIsSubpictureStreamEnabled,
DVDCtrlSubpictureStreamEnabled,
+ DVDCtrlGetSubpictureLanguage,
+ DVDCtrlSubpictureLanguage,
DVDCtrlGetSubpictureAttributes,
DVDCtrlSubpictureAttributes,
@@ -349,6 +351,13 @@ typedef struct {
DVDCtrlEventType_t type;
int32_t serial;
DVDSubpictureStream_t streamnr;
+ DVDLangID_t langid;
+} DVDCtrlSubpictureLanguageEvent_t;
+
+typedef struct {
+ DVDCtrlEventType_t type;
+ int32_t serial;
+ DVDSubpictureStream_t streamnr;
DVDSubpictureAttributes_t attr;
} DVDCtrlSubpictureAttributesEvent_t;
@@ -442,6 +451,7 @@ typedef union {
DVDCtrlCurrentSubpictureEvent_t currentsubpicture;
DVDCtrlSubpictureStreamEnabledEvent_t subpicturestreamenabled;
+ DVDCtrlSubpictureLanguageEvent_t subpicturelanguage;
DVDCtrlSubpictureAttributesEvent_t subpictureattributes;
DVDCtrlCurrentAngleEvent_t currentangle;
Index: vmg/com.c
===================================================================
RCS file: /cvsroot/ogle/ogle/vmg/com.c,v
retrieving revision 1.27
diff -u -d -p -r1.27 com.c
--- vmg/com.c 13 Sep 2003 17:40:09 -0000 1.27
+++ vmg/com.c 28 Jul 2004 14:22:44 -0000
@@ -170,6 +170,7 @@ void handle_events(MsgEventQ_t *msgq, Ms
case DVDCtrlGetAudioAttributes:
case DVDCtrlGetCurrentSubpicture:
case DVDCtrlIsSubpictureStreamEnabled:
+ case DVDCtrlGetSubpictureLanguage:
case DVDCtrlGetSubpictureAttributes:
case DVDCtrlGetCurrentAngle:
case DVDCtrlGetState:
Index: vmg/nav.c
===================================================================
RCS file: /cvsroot/ogle/ogle/vmg/nav.c,v
retrieving revision 1.99
diff -u -d -p -r1.99 nav.c
--- vmg/nav.c 7 Mar 2004 10:44:33 -0000 1.99
+++ vmg/nav.c 28 Jul 2004 14:22:47 -0000
@@ -1009,6 +1009,20 @@ int process_user_data(MsgEvent_t ev, pci
MsgSendEvent(msgq, ev.any.client, &send_ev, 0);
}
break;
+ case DVDCtrlGetSubpictureLanguage:
+ {
+ MsgEvent_t send_ev;
+ int streamN = ev.dvdctrl.cmd.subpicturelanguage.streamnr;
+ send_ev.type = MsgEventQDVDCtrl;
+ send_ev.dvdctrl.cmd.type = DVDCtrlSubpictureLanguage;
+ send_ev.dvdctrl.cmd.subpicturelanguage.streamnr = streamN;
+ {
+ subp_attr_t attr = vm_get_subp_attr(streamN);
+ send_ev.dvdctrl.cmd.subpicturelanguage.langid = attr.lang_code;
+ MsgSendEvent(msgq, ev.any.client, &send_ev, 0);
+ }
+ }
+ break;
case DVDCtrlGetSubpictureAttributes: // FIXME XXX $$$ Not done
{
MsgEvent_t send_ev;
--
|| Seth Kingsley || [email protected] ||
|| http://www.meowfishies.com/ | Meow ^_^ ||
signature.asc
(application/pgp-signature, 187 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2 (FreeBSD) iD8DBQFBB7fhD1AymFxBOwgRAnN3AJ0dBSkzzcZNkRg+16OCegRzrRSpuACeI/+x 1jNLCVXiDcS3LmitgjK8JjM= =5VUK -----END PGP SIGNATURE-----