Commit 38ed2e8e authored by Laurent Aimar's avatar Laurent Aimar

Used vout_control_Push for vout_RegisterSubpictureChannel.

parent 68e3372b
...@@ -41,6 +41,7 @@ enum { ...@@ -41,6 +41,7 @@ enum {
#endif #endif
VOUT_CONTROL_SUBPICTURE, /* subpicture */ VOUT_CONTROL_SUBPICTURE, /* subpicture */
VOUT_CONTROL_FLUSH_SUBPICTURE, /* integer */ VOUT_CONTROL_FLUSH_SUBPICTURE, /* integer */
VOUT_CONTROL_REGISTER_SUBPICTURE, /* integer_ptr */
VOUT_CONTROL_OSD_TITLE, /* string */ VOUT_CONTROL_OSD_TITLE, /* string */
VOUT_CONTROL_CHANGE_FILTERS, /* string */ VOUT_CONTROL_CHANGE_FILTERS, /* string */
VOUT_CONTROL_CHANGE_SUB_FILTERS, /* string */ VOUT_CONTROL_CHANGE_SUB_FILTERS, /* string */
...@@ -70,6 +71,7 @@ typedef struct { ...@@ -70,6 +71,7 @@ typedef struct {
mtime_t *time_ptr; mtime_t *time_ptr;
char *string; char *string;
int integer; int integer;
int *integer_ptr;
struct { struct {
int a; int a;
int b; int b;
......
...@@ -357,7 +357,16 @@ void vout_PutSubpicture( vout_thread_t *vout, subpicture_t *subpic ) ...@@ -357,7 +357,16 @@ void vout_PutSubpicture( vout_thread_t *vout, subpicture_t *subpic )
} }
int vout_RegisterSubpictureChannel( vout_thread_t *vout ) int vout_RegisterSubpictureChannel( vout_thread_t *vout )
{ {
return spu_RegisterChannel(vout->p->p_spu); int channel = SPU_DEFAULT_CHANNEL;
vout_control_cmd_t cmd;
vout_control_cmd_Init(&cmd, VOUT_CONTROL_REGISTER_SUBPICTURE);
cmd.u.integer_ptr = &channel;
vout_control_Push(&vout->p->control, &cmd);
vout_control_WaitEmpty(&vout->p->control);
return channel;
} }
void vout_FlushSubpictureChannel( vout_thread_t *vout, int channel ) void vout_FlushSubpictureChannel( vout_thread_t *vout, int channel )
{ {
...@@ -760,6 +769,11 @@ static void ThreadDisplaySubpicture(vout_thread_t *vout, ...@@ -760,6 +769,11 @@ static void ThreadDisplaySubpicture(vout_thread_t *vout,
spu_DisplaySubpicture(vout->p->p_spu, subpicture); spu_DisplaySubpicture(vout->p->p_spu, subpicture);
} }
static void ThreadRegisterSubpicture(vout_thread_t *vout, int *channel)
{
*channel = spu_RegisterChannel(vout->p->p_spu);
}
static void ThreadFlushSubpicture(vout_thread_t *vout, int channel) static void ThreadFlushSubpicture(vout_thread_t *vout, int channel)
{ {
spu_ClearChannel(vout->p->p_spu, channel); spu_ClearChannel(vout->p->p_spu, channel);
...@@ -1123,6 +1137,9 @@ static void *Thread(void *object) ...@@ -1123,6 +1137,9 @@ static void *Thread(void *object)
case VOUT_CONTROL_FLUSH_SUBPICTURE: case VOUT_CONTROL_FLUSH_SUBPICTURE:
ThreadFlushSubpicture(vout, cmd.u.integer); ThreadFlushSubpicture(vout, cmd.u.integer);
break; break;
case VOUT_CONTROL_REGISTER_SUBPICTURE:
ThreadRegisterSubpicture(vout, cmd.u.integer_ptr);
break;
case VOUT_CONTROL_OSD_TITLE: case VOUT_CONTROL_OSD_TITLE:
ThreadDisplayOsdTitle(vout, cmd.u.string); ThreadDisplayOsdTitle(vout, cmd.u.string);
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment