Mercurial > mplayer.hg
comparison command.c @ 29806:a5e7590ffdbd
Separate teletext from tv support.
Path by Francesco Lavra, francescolavra interfree it
author | cehoyos |
---|---|
date | Sat, 07 Nov 2009 12:31:05 +0000 |
parents | d287e2785570 |
children | e255f9571156 |
comparison
equal
deleted
inserted
replaced
29805:b9350576d4fc | 29806:a5e7590ffdbd |
---|---|
1887 /* | 1887 /* |
1888 for teletext's GET,SET,STEP ioctls this is not 0 | 1888 for teletext's GET,SET,STEP ioctls this is not 0 |
1889 SET is GET+1 | 1889 SET is GET+1 |
1890 STEP is GET+2 | 1890 STEP is GET+2 |
1891 */ | 1891 */ |
1892 tvi_handle_t *tvh = mpctx->demuxer->priv; | 1892 if (!mpctx->demuxer->teletext) |
1893 if (mpctx->demuxer->type != DEMUXER_TYPE_TV || !tvh) | |
1894 return M_PROPERTY_UNAVAILABLE; | 1893 return M_PROPERTY_UNAVAILABLE; |
1895 if(!base_ioctl) | 1894 if(!base_ioctl) |
1896 return M_PROPERTY_ERROR; | 1895 return M_PROPERTY_ERROR; |
1897 | 1896 |
1898 switch (action) { | 1897 switch (action) { |
1899 case M_PROPERTY_GET: | 1898 case M_PROPERTY_GET: |
1900 if (!arg) | 1899 if (!arg) |
1901 return M_PROPERTY_ERROR; | 1900 return M_PROPERTY_ERROR; |
1902 result=tvh->functions->control(tvh->priv, base_ioctl, arg); | 1901 result=teletext_control(mpctx->demuxer->teletext, base_ioctl, arg); |
1903 break; | 1902 break; |
1904 case M_PROPERTY_SET: | 1903 case M_PROPERTY_SET: |
1905 if (!arg) | 1904 if (!arg) |
1906 return M_PROPERTY_ERROR; | 1905 return M_PROPERTY_ERROR; |
1907 M_PROPERTY_CLAMP(prop, *(int *) arg); | 1906 M_PROPERTY_CLAMP(prop, *(int *) arg); |
1908 result=tvh->functions->control(tvh->priv, base_ioctl+1, arg); | 1907 result=teletext_control(mpctx->demuxer->teletext, base_ioctl+1, arg); |
1909 break; | 1908 break; |
1910 case M_PROPERTY_STEP_UP: | 1909 case M_PROPERTY_STEP_UP: |
1911 case M_PROPERTY_STEP_DOWN: | 1910 case M_PROPERTY_STEP_DOWN: |
1912 result=tvh->functions->control(tvh->priv, base_ioctl, &val); | 1911 result=teletext_control(mpctx->demuxer->teletext, base_ioctl, &val); |
1913 val += (arg ? *(int *) arg : 1) * (action == M_PROPERTY_STEP_DOWN ? -1 : 1); | 1912 val += (arg ? *(int *) arg : 1) * (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
1914 result=tvh->functions->control(tvh->priv, base_ioctl+1, &val); | 1913 result=teletext_control(mpctx->demuxer->teletext, base_ioctl+1, &val); |
1915 break; | 1914 break; |
1916 default: | 1915 default: |
1917 return M_PROPERTY_NOT_IMPLEMENTED; | 1916 return M_PROPERTY_NOT_IMPLEMENTED; |
1918 } | 1917 } |
1919 | 1918 |
1920 return result == TVI_CONTROL_TRUE ? M_PROPERTY_OK : M_PROPERTY_ERROR; | 1919 return result == VBI_CONTROL_TRUE ? M_PROPERTY_OK : M_PROPERTY_ERROR; |
1921 } | 1920 } |
1922 | 1921 |
1923 static int mp_property_teletext_mode(m_option_t * prop, int action, void *arg, | 1922 static int mp_property_teletext_mode(m_option_t * prop, int action, void *arg, |
1924 MPContext * mpctx) | 1923 MPContext * mpctx) |
1925 { | 1924 { |
1926 tvi_handle_t *tvh = mpctx->demuxer->priv; | |
1927 int result; | 1925 int result; |
1928 int val; | 1926 int val; |
1929 | 1927 |
1930 //with tvh==NULL will fail too | 1928 //with tvh==NULL will fail too |
1931 result=mp_property_teletext_common(prop,action,arg,mpctx); | 1929 result=mp_property_teletext_common(prop,action,arg,mpctx); |
1932 if(result!=M_PROPERTY_OK) | 1930 if(result!=M_PROPERTY_OK) |
1933 return result; | 1931 return result; |
1934 | 1932 |
1935 if(tvh->functions->control(tvh->priv, prop->priv, &val)==TVI_CONTROL_TRUE && val) | 1933 if(teletext_control(mpctx->demuxer->teletext, |
1934 (int)prop->priv, &val)==VBI_CONTROL_TRUE && val) | |
1936 mp_input_set_section("teletext"); | 1935 mp_input_set_section("teletext"); |
1937 else | 1936 else |
1938 mp_input_set_section("tv"); | 1937 mp_input_set_section("tv"); |
1939 return M_PROPERTY_OK; | 1938 return M_PROPERTY_OK; |
1940 } | 1939 } |
1941 | 1940 |
1942 static int mp_property_teletext_page(m_option_t * prop, int action, void *arg, | 1941 static int mp_property_teletext_page(m_option_t * prop, int action, void *arg, |
1943 MPContext * mpctx) | 1942 MPContext * mpctx) |
1944 { | 1943 { |
1945 tvi_handle_t *tvh = mpctx->demuxer->priv; | |
1946 int result; | 1944 int result; |
1947 int val; | 1945 int val; |
1948 if (mpctx->demuxer->type != DEMUXER_TYPE_TV || !tvh) | 1946 if (!mpctx->demuxer->teletext) |
1949 return M_PROPERTY_UNAVAILABLE; | 1947 return M_PROPERTY_UNAVAILABLE; |
1950 switch(action){ | 1948 switch(action){ |
1951 case M_PROPERTY_STEP_UP: | 1949 case M_PROPERTY_STEP_UP: |
1952 case M_PROPERTY_STEP_DOWN: | 1950 case M_PROPERTY_STEP_DOWN: |
1953 //This should be handled separately | 1951 //This should be handled separately |
1954 val = (arg ? *(int *) arg : 1) * (action == M_PROPERTY_STEP_DOWN ? -1 : 1); | 1952 val = (arg ? *(int *) arg : 1) * (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
1955 result=tvh->functions->control(tvh->priv, TV_VBI_CONTROL_STEP_PAGE, &val); | 1953 result=teletext_control(mpctx->demuxer->teletext, |
1954 TV_VBI_CONTROL_STEP_PAGE, &val); | |
1956 break; | 1955 break; |
1957 default: | 1956 default: |
1958 result=mp_property_teletext_common(prop,action,arg,mpctx); | 1957 result=mp_property_teletext_common(prop,action,arg,mpctx); |
1959 } | 1958 } |
1960 return result; | 1959 return result; |
2868 | 2867 |
2869 case MP_CMD_TV_STEP_CHANNEL_LIST: | 2868 case MP_CMD_TV_STEP_CHANNEL_LIST: |
2870 if (mpctx->file_format == DEMUXER_TYPE_TV) | 2869 if (mpctx->file_format == DEMUXER_TYPE_TV) |
2871 tv_step_chanlist((tvi_handle_t *) (mpctx->demuxer->priv)); | 2870 tv_step_chanlist((tvi_handle_t *) (mpctx->demuxer->priv)); |
2872 break; | 2871 break; |
2872 #endif /* CONFIG_TV */ | |
2873 #ifdef CONFIG_TV_TELETEXT | 2873 #ifdef CONFIG_TV_TELETEXT |
2874 case MP_CMD_TV_TELETEXT_ADD_DEC: | 2874 case MP_CMD_TV_TELETEXT_ADD_DEC: |
2875 { | 2875 { |
2876 tvi_handle_t* tvh=(tvi_handle_t *)(mpctx->demuxer->priv); | 2876 if (mpctx->demuxer->teletext) |
2877 if (mpctx->file_format == DEMUXER_TYPE_TV) | 2877 teletext_control(mpctx->demuxer->teletext,TV_VBI_CONTROL_ADD_DEC, |
2878 tvh->functions->control(tvh->priv,TV_VBI_CONTROL_ADD_DEC,&(cmd->args[0].v.s)); | 2878 &(cmd->args[0].v.s)); |
2879 break; | 2879 break; |
2880 } | 2880 } |
2881 case MP_CMD_TV_TELETEXT_GO_LINK: | 2881 case MP_CMD_TV_TELETEXT_GO_LINK: |
2882 { | 2882 { |
2883 tvi_handle_t* tvh=(tvi_handle_t *)(mpctx->demuxer->priv); | 2883 if (mpctx->demuxer->teletext) |
2884 if (mpctx->file_format == DEMUXER_TYPE_TV) | 2884 teletext_control(mpctx->demuxer->teletext,TV_VBI_CONTROL_GO_LINK, |
2885 tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GO_LINK,&(cmd->args[0].v.i)); | 2885 &(cmd->args[0].v.i)); |
2886 break; | 2886 break; |
2887 } | 2887 } |
2888 #endif /* CONFIG_TV_TELETEXT */ | 2888 #endif /* CONFIG_TV_TELETEXT */ |
2889 #endif /* CONFIG_TV */ | |
2890 | 2889 |
2891 case MP_CMD_SUB_LOAD: | 2890 case MP_CMD_SUB_LOAD: |
2892 if (sh_video) { | 2891 if (sh_video) { |
2893 int n = mpctx->set_of_sub_size; | 2892 int n = mpctx->set_of_sub_size; |
2894 add_subtitles(cmd->args[0].v.s, sh_video->fps, 0); | 2893 add_subtitles(cmd->args[0].v.s, sh_video->fps, 0); |