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);