Mercurial > mplayer.hg
comparison mplayer.c @ 20975:de18de0c8718
consistently use M_PROPERTY_ERROR/M_PROPERTY_OK as return values.
author | reimar |
---|---|
date | Fri, 17 Nov 2006 19:03:53 +0000 |
parents | 123cdf4a0f73 |
children | 8aebf806a476 |
comparison
equal
deleted
inserted
replaced
20974:123cdf4a0f73 | 20975:de18de0c8718 |
---|---|
1535 | 1535 |
1536 /// Playback speed (RW) | 1536 /// Playback speed (RW) |
1537 static int mp_property_playback_speed(m_option_t* prop,int action,void* arg) { | 1537 static int mp_property_playback_speed(m_option_t* prop,int action,void* arg) { |
1538 switch(action) { | 1538 switch(action) { |
1539 case M_PROPERTY_SET: | 1539 case M_PROPERTY_SET: |
1540 if(!arg) return 0; | 1540 if(!arg) return M_PROPERTY_ERROR; |
1541 M_PROPERTY_CLAMP(prop,*(float*)arg); | 1541 M_PROPERTY_CLAMP(prop,*(float*)arg); |
1542 playback_speed = *(float*)arg; | 1542 playback_speed = *(float*)arg; |
1543 build_afilter_chain(sh_audio, &ao_data); | 1543 build_afilter_chain(sh_audio, &ao_data); |
1544 return 1; | 1544 return M_PROPERTY_OK; |
1545 case M_PROPERTY_STEP_UP: | 1545 case M_PROPERTY_STEP_UP: |
1546 case M_PROPERTY_STEP_DOWN: | 1546 case M_PROPERTY_STEP_DOWN: |
1547 playback_speed += (arg ? *(float*)arg : 0.1) * | 1547 playback_speed += (arg ? *(float*)arg : 0.1) * |
1548 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); | 1548 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
1549 M_PROPERTY_CLAMP(prop,playback_speed); | 1549 M_PROPERTY_CLAMP(prop,playback_speed); |
1550 build_afilter_chain(sh_audio, &ao_data); | 1550 build_afilter_chain(sh_audio, &ao_data); |
1551 return 1; | 1551 return M_PROPERTY_OK; |
1552 } | 1552 } |
1553 return m_property_float_range(prop,action,arg,&playback_speed); | 1553 return m_property_float_range(prop,action,arg,&playback_speed); |
1554 } | 1554 } |
1555 | 1555 |
1556 /// filename with path (RO) | 1556 /// filename with path (RO) |
1632 !(int)(len = demuxer_get_time_length(demuxer))) | 1632 !(int)(len = demuxer_get_time_length(demuxer))) |
1633 return M_PROPERTY_UNAVAILABLE; | 1633 return M_PROPERTY_UNAVAILABLE; |
1634 | 1634 |
1635 switch(action) { | 1635 switch(action) { |
1636 case M_PROPERTY_PRINT: | 1636 case M_PROPERTY_PRINT: |
1637 if(!arg) return 0; | 1637 if(!arg) return M_PROPERTY_ERROR; |
1638 else { | 1638 else { |
1639 int h, m, s = len; | 1639 int h, m, s = len; |
1640 h = s/3600; | 1640 h = s/3600; |
1641 s -= h*3600; | 1641 s -= h*3600; |
1642 m = s/60; | 1642 m = s/60; |
1643 s -= m*60; | 1643 s -= m*60; |
1644 *(char**)arg = malloc(20); | 1644 *(char**)arg = malloc(20); |
1645 if(h > 0) sprintf(*(char**)arg,"%d:%02d:%02d",h,m,s); | 1645 if(h > 0) sprintf(*(char**)arg,"%d:%02d:%02d",h,m,s); |
1646 else if(m > 0) sprintf(*(char**)arg,"%d:%02d",m,s); | 1646 else if(m > 0) sprintf(*(char**)arg,"%d:%02d",m,s); |
1647 else sprintf(*(char**)arg,"%d",s); | 1647 else sprintf(*(char**)arg,"%d",s); |
1648 return 1; | 1648 return M_PROPERTY_OK; |
1649 } | 1649 } |
1650 break; | 1650 break; |
1651 } | 1651 } |
1652 return m_property_double_ro(prop,action,arg,len); | 1652 return m_property_double_ro(prop,action,arg,len); |
1653 } | 1653 } |
1663 | 1663 |
1664 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; | 1664 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; |
1665 | 1665 |
1666 switch(action) { | 1666 switch(action) { |
1667 case M_PROPERTY_GET: | 1667 case M_PROPERTY_GET: |
1668 if(!arg) return 0; | 1668 if(!arg) return M_PROPERTY_ERROR; |
1669 mixer_getbothvolume(&mixer,arg); | 1669 mixer_getbothvolume(&mixer,arg); |
1670 return 1; | 1670 return M_PROPERTY_OK; |
1671 case M_PROPERTY_PRINT:{ | 1671 case M_PROPERTY_PRINT:{ |
1672 float vol; | 1672 float vol; |
1673 if(!arg) return 0; | 1673 if(!arg) return M_PROPERTY_ERROR; |
1674 mixer_getbothvolume(&mixer,&vol); | 1674 mixer_getbothvolume(&mixer,&vol); |
1675 return m_property_float_range(prop,action,arg,&vol); | 1675 return m_property_float_range(prop,action,arg,&vol); |
1676 } | 1676 } |
1677 case M_PROPERTY_STEP_UP: | 1677 case M_PROPERTY_STEP_UP: |
1678 case M_PROPERTY_STEP_DOWN: | 1678 case M_PROPERTY_STEP_DOWN: |
1685 if (edl_muted) return M_PROPERTY_DISABLED; | 1685 if (edl_muted) return M_PROPERTY_DISABLED; |
1686 user_muted = 0; | 1686 user_muted = 0; |
1687 | 1687 |
1688 switch(action) { | 1688 switch(action) { |
1689 case M_PROPERTY_SET: | 1689 case M_PROPERTY_SET: |
1690 if(!arg) return 0; | 1690 if(!arg) return M_PROPERTY_ERROR; |
1691 M_PROPERTY_CLAMP(prop,*(float*)arg); | 1691 M_PROPERTY_CLAMP(prop,*(float*)arg); |
1692 mixer_setvolume(&mixer,*(float*)arg,*(float*)arg); | 1692 mixer_setvolume(&mixer,*(float*)arg,*(float*)arg); |
1693 return 1; | 1693 return M_PROPERTY_OK; |
1694 case M_PROPERTY_STEP_UP: | 1694 case M_PROPERTY_STEP_UP: |
1695 if(arg && *(float*)arg <= 0) | 1695 if(arg && *(float*)arg <= 0) |
1696 mixer_decvolume(&mixer); | 1696 mixer_decvolume(&mixer); |
1697 else | 1697 else |
1698 mixer_incvolume(&mixer); | 1698 mixer_incvolume(&mixer); |
1699 return 1; | 1699 return M_PROPERTY_OK; |
1700 case M_PROPERTY_STEP_DOWN: | 1700 case M_PROPERTY_STEP_DOWN: |
1701 if(arg && *(float*)arg <= 0) | 1701 if(arg && *(float*)arg <= 0) |
1702 mixer_incvolume(&mixer); | 1702 mixer_incvolume(&mixer); |
1703 else | 1703 else |
1704 mixer_decvolume(&mixer); | 1704 mixer_decvolume(&mixer); |
1705 return 1; | 1705 return M_PROPERTY_OK; |
1706 } | 1706 } |
1707 return M_PROPERTY_NOT_IMPLEMENTED; | 1707 return M_PROPERTY_NOT_IMPLEMENTED; |
1708 } | 1708 } |
1709 | 1709 |
1710 /// Mute (RW) | 1710 /// Mute (RW) |
1713 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; | 1713 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; |
1714 | 1714 |
1715 switch(action) { | 1715 switch(action) { |
1716 case M_PROPERTY_SET: | 1716 case M_PROPERTY_SET: |
1717 if(edl_muted) return M_PROPERTY_DISABLED; | 1717 if(edl_muted) return M_PROPERTY_DISABLED; |
1718 if(!arg) return 0; | 1718 if(!arg) return M_PROPERTY_ERROR; |
1719 if((!!*(int*)arg) != mixer.muted) | 1719 if((!!*(int*)arg) != mixer.muted) |
1720 mixer_mute(&mixer); | 1720 mixer_mute(&mixer); |
1721 user_muted = mixer.muted; | 1721 user_muted = mixer.muted; |
1722 return 1; | 1722 return M_PROPERTY_OK; |
1723 case M_PROPERTY_STEP_UP: | 1723 case M_PROPERTY_STEP_UP: |
1724 case M_PROPERTY_STEP_DOWN: | 1724 case M_PROPERTY_STEP_DOWN: |
1725 if(edl_muted) return M_PROPERTY_DISABLED; | 1725 if(edl_muted) return M_PROPERTY_DISABLED; |
1726 mixer_mute(&mixer); | 1726 mixer_mute(&mixer); |
1727 user_muted = mixer.muted; | 1727 user_muted = mixer.muted; |
1728 return 1; | 1728 return M_PROPERTY_OK; |
1729 case M_PROPERTY_PRINT: | 1729 case M_PROPERTY_PRINT: |
1730 if(!arg) return 0; | 1730 if(!arg) return M_PROPERTY_ERROR; |
1731 if(edl_muted) { | 1731 if(edl_muted) { |
1732 *(char**)arg = strdup(MSGTR_EnabledEdl); | 1732 *(char**)arg = strdup(MSGTR_EnabledEdl); |
1733 return 1; | 1733 return M_PROPERTY_OK; |
1734 } | 1734 } |
1735 default: | 1735 default: |
1736 return m_property_flag(prop,action,arg,&mixer.muted); | 1736 return m_property_flag(prop,action,arg,&mixer.muted); |
1737 | 1737 |
1738 } | 1738 } |
1743 if(!(sh_audio && sh_video)) return M_PROPERTY_UNAVAILABLE; | 1743 if(!(sh_audio && sh_video)) return M_PROPERTY_UNAVAILABLE; |
1744 switch(action) { | 1744 switch(action) { |
1745 case M_PROPERTY_SET: | 1745 case M_PROPERTY_SET: |
1746 case M_PROPERTY_STEP_UP: | 1746 case M_PROPERTY_STEP_UP: |
1747 case M_PROPERTY_STEP_DOWN: | 1747 case M_PROPERTY_STEP_DOWN: |
1748 if(!arg) return 0; | 1748 if(!arg) return M_PROPERTY_ERROR; |
1749 else { | 1749 else { |
1750 float delay = audio_delay; | 1750 float delay = audio_delay; |
1751 m_property_delay(prop,action,arg,&audio_delay); | 1751 m_property_delay(prop,action,arg,&audio_delay); |
1752 if(sh_audio) sh_audio->delay -= audio_delay-delay; | 1752 if(sh_audio) sh_audio->delay -= audio_delay-delay; |
1753 } | 1753 } |
1754 return 1; | 1754 return M_PROPERTY_OK; |
1755 default: | 1755 default: |
1756 return m_property_delay(prop,action,arg,&audio_delay); | 1756 return m_property_delay(prop,action,arg,&audio_delay); |
1757 } | 1757 } |
1758 } | 1758 } |
1759 | 1759 |
1778 /// Number of channels (RO) | 1778 /// Number of channels (RO) |
1779 static int mp_property_channels(m_option_t* prop,int action,void* arg) { | 1779 static int mp_property_channels(m_option_t* prop,int action,void* arg) { |
1780 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; | 1780 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; |
1781 switch(action) { | 1781 switch(action) { |
1782 case M_PROPERTY_PRINT: | 1782 case M_PROPERTY_PRINT: |
1783 if(!arg) return 0; | 1783 if(!arg) return M_PROPERTY_ERROR; |
1784 switch(sh_audio->channels) { | 1784 switch(sh_audio->channels) { |
1785 case 1: *(char**)arg = strdup("mono"); break; | 1785 case 1: *(char**)arg = strdup("mono"); break; |
1786 case 2: *(char**)arg = strdup("stereo"); break; | 1786 case 2: *(char**)arg = strdup("stereo"); break; |
1787 default: | 1787 default: |
1788 *(char**)arg = malloc(32); | 1788 *(char**)arg = malloc(32); |
1789 sprintf(*(char**)arg,"%d channels",sh_audio->channels); | 1789 sprintf(*(char**)arg,"%d channels",sh_audio->channels); |
1790 } | 1790 } |
1791 return 1; | 1791 return M_PROPERTY_OK; |
1792 } | 1792 } |
1793 return m_property_int_ro(prop,action,arg,sh_audio->channels); | 1793 return m_property_int_ro(prop,action,arg,sh_audio->channels); |
1794 } | 1794 } |
1795 | 1795 |
1796 /// Selected audio id (RW) | 1796 /// Selected audio id (RW) |
1799 | 1799 |
1800 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; | 1800 if(!sh_audio) return M_PROPERTY_UNAVAILABLE; |
1801 | 1801 |
1802 switch(action) { | 1802 switch(action) { |
1803 case M_PROPERTY_GET: | 1803 case M_PROPERTY_GET: |
1804 if(!arg) return 0; | 1804 if(!arg) return M_PROPERTY_ERROR; |
1805 *(int*)arg = audio_id; | 1805 *(int*)arg = audio_id; |
1806 return 1; | 1806 return M_PROPERTY_OK; |
1807 case M_PROPERTY_PRINT: | 1807 case M_PROPERTY_PRINT: |
1808 if(!arg) return 0; | 1808 if(!arg) return M_PROPERTY_ERROR; |
1809 | 1809 |
1810 if (audio_id < 0) | 1810 if (audio_id < 0) |
1811 *(char**)arg = strdup(MSGTR_Disabled); | 1811 *(char**)arg = strdup(MSGTR_Disabled); |
1812 else { | 1812 else { |
1813 char lang[40] = MSGTR_Unknown; | 1813 char lang[40] = MSGTR_Unknown; |
1824 } | 1824 } |
1825 #endif | 1825 #endif |
1826 *(char**)arg = malloc(64); | 1826 *(char**)arg = malloc(64); |
1827 snprintf(*(char**)arg, 64, "(%d) %s", audio_id, lang); | 1827 snprintf(*(char**)arg, 64, "(%d) %s", audio_id, lang); |
1828 } | 1828 } |
1829 return 1; | 1829 return M_PROPERTY_OK; |
1830 | 1830 |
1831 case M_PROPERTY_STEP_UP: | 1831 case M_PROPERTY_STEP_UP: |
1832 current_id = demuxer->audio->id; | 1832 current_id = demuxer->audio->id; |
1833 audio_id = demuxer_switch_audio(demuxer, -1); | 1833 audio_id = demuxer_switch_audio(demuxer, -1); |
1834 if(audio_id > -1 && demuxer->audio->id != current_id) { | 1834 if(audio_id > -1 && demuxer->audio->id != current_id) { |
1840 sh_audio = sh2; | 1840 sh_audio = sh2; |
1841 reinit_audio_chain(); | 1841 reinit_audio_chain(); |
1842 } | 1842 } |
1843 } | 1843 } |
1844 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_TRACK=%d\n", audio_id); | 1844 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_AUDIO_TRACK=%d\n", audio_id); |
1845 break; | 1845 return M_PROPERTY_OK; |
1846 default: | 1846 default: |
1847 return M_PROPERTY_NOT_IMPLEMENTED; | 1847 return M_PROPERTY_NOT_IMPLEMENTED; |
1848 } | 1848 } |
1849 | 1849 |
1850 return 1; | |
1851 } | 1850 } |
1852 | 1851 |
1853 static int reinit_video_chain(void); | 1852 static int reinit_video_chain(void); |
1854 /// Selected video id (RW) | 1853 /// Selected video id (RW) |
1855 static int mp_property_video(m_option_t* prop,int action,void* arg) { | 1854 static int mp_property_video(m_option_t* prop,int action,void* arg) { |
1857 | 1856 |
1858 if(!sh_video) return M_PROPERTY_UNAVAILABLE; | 1857 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
1859 | 1858 |
1860 switch(action) { | 1859 switch(action) { |
1861 case M_PROPERTY_GET: | 1860 case M_PROPERTY_GET: |
1862 if(!arg) return 0; | 1861 if(!arg) return M_PROPERTY_ERROR; |
1863 *(int*)arg = video_id; | 1862 *(int*)arg = video_id; |
1864 return 1; | 1863 return M_PROPERTY_OK; |
1865 case M_PROPERTY_PRINT: | 1864 case M_PROPERTY_PRINT: |
1866 if(!arg) return 0; | 1865 if(!arg) return M_PROPERTY_ERROR; |
1867 | 1866 |
1868 if (video_id < 0) | 1867 if (video_id < 0) |
1869 *(char**)arg = strdup(MSGTR_Disabled); | 1868 *(char**)arg = strdup(MSGTR_Disabled); |
1870 else { | 1869 else { |
1871 char lang[40] = MSGTR_Unknown; | 1870 char lang[40] = MSGTR_Unknown; |
1872 *(char**)arg = malloc(64); | 1871 *(char**)arg = malloc(64); |
1873 snprintf(*(char**)arg, 64, "(%d)", video_id, lang); | 1872 snprintf(*(char**)arg, 64, "(%d)", video_id, lang); |
1874 } | 1873 } |
1875 return 1; | 1874 return M_PROPERTY_OK; |
1876 | 1875 |
1877 case M_PROPERTY_STEP_UP: | 1876 case M_PROPERTY_STEP_UP: |
1878 current_id = demuxer->video->id; | 1877 current_id = demuxer->video->id; |
1879 video_id = demuxer_switch_video(demuxer, -1); | 1878 video_id = demuxer_switch_video(demuxer, -1); |
1880 if(video_id > -1 && demuxer->video->id != current_id) { | 1879 if(video_id > -1 && demuxer->video->id != current_id) { |
1886 sh_video = sh2; | 1885 sh_video = sh2; |
1887 reinit_video_chain(); | 1886 reinit_video_chain(); |
1888 } | 1887 } |
1889 } | 1888 } |
1890 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VIDEO_TRACK=%d\n", video_id); | 1889 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_VIDEO_TRACK=%d\n", video_id); |
1891 | 1890 return M_PROPERTY_OK; |
1892 break; | 1891 |
1893 default: | 1892 default: |
1894 return M_PROPERTY_NOT_IMPLEMENTED; | 1893 return M_PROPERTY_NOT_IMPLEMENTED; |
1895 } | 1894 } |
1896 | |
1897 return 1; | |
1898 } | 1895 } |
1899 | 1896 |
1900 ///@} | 1897 ///@} |
1901 | 1898 |
1902 /// \defgroup VideoProperties Video properties | 1899 /// \defgroup VideoProperties Video properties |
1908 | 1905 |
1909 if(!video_out) return M_PROPERTY_UNAVAILABLE; | 1906 if(!video_out) return M_PROPERTY_UNAVAILABLE; |
1910 | 1907 |
1911 switch(action) { | 1908 switch(action) { |
1912 case M_PROPERTY_SET: | 1909 case M_PROPERTY_SET: |
1913 if(!arg) return 0; | 1910 if(!arg) return M_PROPERTY_ERROR; |
1914 M_PROPERTY_CLAMP(prop,*(int*)arg); | 1911 M_PROPERTY_CLAMP(prop,*(int*)arg); |
1915 if(vo_fs == !!*(int*)arg) return 1; | 1912 if(vo_fs == !!*(int*)arg) return M_PROPERTY_OK; |
1916 case M_PROPERTY_STEP_UP: | 1913 case M_PROPERTY_STEP_UP: |
1917 case M_PROPERTY_STEP_DOWN: | 1914 case M_PROPERTY_STEP_DOWN: |
1918 #ifdef HAVE_NEW_GUI | 1915 #ifdef HAVE_NEW_GUI |
1919 if(use_gui) guiGetEvent(guiIEvent,(char*)MP_CMD_GUI_FULLSCREEN); | 1916 if(use_gui) guiGetEvent(guiIEvent,(char*)MP_CMD_GUI_FULLSCREEN); |
1920 else | 1917 else |
1921 #endif | 1918 #endif |
1922 if(vo_config_count) video_out->control(VOCTRL_FULLSCREEN, 0); | 1919 if(vo_config_count) video_out->control(VOCTRL_FULLSCREEN, 0); |
1923 return 1; | 1920 return M_PROPERTY_OK; |
1924 default: | 1921 default: |
1925 return m_property_flag(prop,action,arg,&vo_fs); | 1922 return m_property_flag(prop,action,arg,&vo_fs); |
1926 } | 1923 } |
1927 } | 1924 } |
1928 | 1925 |
1955 if(!video_out || video_out->control(VOCTRL_GET_PANSCAN,NULL ) != VO_TRUE) | 1952 if(!video_out || video_out->control(VOCTRL_GET_PANSCAN,NULL ) != VO_TRUE) |
1956 return M_PROPERTY_UNAVAILABLE; | 1953 return M_PROPERTY_UNAVAILABLE; |
1957 | 1954 |
1958 switch(action) { | 1955 switch(action) { |
1959 case M_PROPERTY_SET: | 1956 case M_PROPERTY_SET: |
1960 if(!arg) return 0; | 1957 if(!arg) return M_PROPERTY_ERROR; |
1961 M_PROPERTY_CLAMP(prop,*(float*)arg); | 1958 M_PROPERTY_CLAMP(prop,*(float*)arg); |
1962 vo_panscan = *(float*)arg; | 1959 vo_panscan = *(float*)arg; |
1963 video_out->control(VOCTRL_SET_PANSCAN,NULL); | 1960 video_out->control(VOCTRL_SET_PANSCAN,NULL); |
1964 return 1; | 1961 return M_PROPERTY_OK; |
1965 case M_PROPERTY_STEP_UP: | 1962 case M_PROPERTY_STEP_UP: |
1966 case M_PROPERTY_STEP_DOWN: | 1963 case M_PROPERTY_STEP_DOWN: |
1967 vo_panscan += (arg ? *(float*)arg : 0.1) * | 1964 vo_panscan += (arg ? *(float*)arg : 0.1) * |
1968 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); | 1965 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
1969 if(vo_panscan > 1) vo_panscan = 1; | 1966 if(vo_panscan > 1) vo_panscan = 1; |
1970 else if(vo_panscan < 0) vo_panscan = 0; | 1967 else if(vo_panscan < 0) vo_panscan = 0; |
1971 video_out->control(VOCTRL_SET_PANSCAN,NULL); | 1968 video_out->control(VOCTRL_SET_PANSCAN,NULL); |
1972 return 1; | 1969 return M_PROPERTY_OK; |
1973 default: | 1970 default: |
1974 return m_property_float_range(prop,action,arg,&vo_panscan); | 1971 return m_property_float_range(prop,action,arg,&vo_panscan); |
1975 } | 1972 } |
1976 } | 1973 } |
1977 | 1974 |
1983 | 1980 |
1984 if(!video_out) return M_PROPERTY_UNAVAILABLE; | 1981 if(!video_out) return M_PROPERTY_UNAVAILABLE; |
1985 | 1982 |
1986 switch(action) { | 1983 switch(action) { |
1987 case M_PROPERTY_SET: | 1984 case M_PROPERTY_SET: |
1988 if(!arg) return 0; | 1985 if(!arg) return M_PROPERTY_ERROR; |
1989 M_PROPERTY_CLAMP(prop,*(int*)arg); | 1986 M_PROPERTY_CLAMP(prop,*(int*)arg); |
1990 if(*vo_var == !!*(int*)arg) return 1; | 1987 if(*vo_var == !!*(int*)arg) return M_PROPERTY_OK; |
1991 case M_PROPERTY_STEP_UP: | 1988 case M_PROPERTY_STEP_UP: |
1992 case M_PROPERTY_STEP_DOWN: | 1989 case M_PROPERTY_STEP_DOWN: |
1993 if(vo_config_count) video_out->control(vo_ctrl, 0); | 1990 if(vo_config_count) video_out->control(vo_ctrl, 0); |
1994 return 1; | 1991 return M_PROPERTY_OK; |
1995 default: | 1992 default: |
1996 return m_property_flag(prop,action,arg,vo_var); | 1993 return m_property_flag(prop,action,arg,vo_var); |
1997 } | 1994 } |
1998 } | 1995 } |
1999 | 1996 |
2017 | 2014 |
2018 if(!sh_video) return M_PROPERTY_UNAVAILABLE; | 2015 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
2019 | 2016 |
2020 switch(action) { | 2017 switch(action) { |
2021 case M_PROPERTY_PRINT: | 2018 case M_PROPERTY_PRINT: |
2022 if(!arg) return 0; | 2019 if(!arg) return M_PROPERTY_ERROR; |
2023 *(char**)arg = strdup(frame_dropping == 1 ? MSGTR_Enabled : | 2020 *(char**)arg = strdup(frame_dropping == 1 ? MSGTR_Enabled : |
2024 (frame_dropping == 2 ? MSGTR_HardFrameDrop : MSGTR_Disabled)); | 2021 (frame_dropping == 2 ? MSGTR_HardFrameDrop : MSGTR_Disabled)); |
2025 return 1; | 2022 return M_PROPERTY_OK; |
2026 default: | 2023 default: |
2027 return m_property_choice(prop,action,arg,&frame_dropping); | 2024 return m_property_choice(prop,action,arg,&frame_dropping); |
2028 } | 2025 } |
2029 } | 2026 } |
2030 | 2027 |
2039 get_video_colors (sh_video, prop->name, gamma); | 2036 get_video_colors (sh_video, prop->name, gamma); |
2040 } | 2037 } |
2041 | 2038 |
2042 switch(action) { | 2039 switch(action) { |
2043 case M_PROPERTY_SET: | 2040 case M_PROPERTY_SET: |
2044 if(!arg) return 0; | 2041 if(!arg) return M_PROPERTY_ERROR; |
2045 M_PROPERTY_CLAMP(prop,*(int*)arg); | 2042 M_PROPERTY_CLAMP(prop,*(int*)arg); |
2046 *gamma = *(int*)arg; | 2043 *gamma = *(int*)arg; |
2047 r = set_video_colors(sh_video, prop->name, *gamma); | 2044 r = set_video_colors(sh_video, prop->name, *gamma); |
2048 if(r <= 0) break; | 2045 if(r <= 0) break; |
2049 return r; | 2046 return r; |
2050 case M_PROPERTY_GET: | 2047 case M_PROPERTY_GET: |
2051 if(!arg) return 0; | 2048 if(!arg) return M_PROPERTY_ERROR; |
2052 r = get_video_colors (sh_video, prop->name, arg); | 2049 r = get_video_colors (sh_video, prop->name, arg); |
2053 if(r <= 0) break; | 2050 if(r <= 0) break; |
2054 return r; | 2051 return r; |
2055 case M_PROPERTY_STEP_UP: | 2052 case M_PROPERTY_STEP_UP: |
2056 case M_PROPERTY_STEP_DOWN: | 2053 case M_PROPERTY_STEP_DOWN: |
2128 #ifdef USE_SUB | 2125 #ifdef USE_SUB |
2129 if(!sh_video) return M_PROPERTY_UNAVAILABLE; | 2126 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
2130 | 2127 |
2131 switch(action) { | 2128 switch(action) { |
2132 case M_PROPERTY_SET: | 2129 case M_PROPERTY_SET: |
2133 if(!arg) return 0; | 2130 if(!arg) return M_PROPERTY_ERROR; |
2134 case M_PROPERTY_STEP_UP: | 2131 case M_PROPERTY_STEP_UP: |
2135 case M_PROPERTY_STEP_DOWN: | 2132 case M_PROPERTY_STEP_DOWN: |
2136 vo_osd_changed(OSDTYPE_SUBTITLE); | 2133 vo_osd_changed(OSDTYPE_SUBTITLE); |
2137 default: | 2134 default: |
2138 return m_property_int_range(prop,action,arg,&sub_pos); | 2135 return m_property_int_range(prop,action,arg,&sub_pos); |
2149 | 2146 |
2150 if(global_sub_size <= 0) return M_PROPERTY_UNAVAILABLE; | 2147 if(global_sub_size <= 0) return M_PROPERTY_UNAVAILABLE; |
2151 | 2148 |
2152 switch(action) { | 2149 switch(action) { |
2153 case M_PROPERTY_GET: | 2150 case M_PROPERTY_GET: |
2154 if(!arg) return 0; | 2151 if(!arg) return M_PROPERTY_ERROR; |
2155 *(int*)arg = global_sub_pos; | 2152 *(int*)arg = global_sub_pos; |
2156 return 1; | 2153 return M_PROPERTY_OK; |
2157 case M_PROPERTY_PRINT: | 2154 case M_PROPERTY_PRINT: |
2158 if(!arg) return 0; | 2155 if(!arg) return M_PROPERTY_ERROR; |
2159 *(char**)arg = malloc(64); | 2156 *(char**)arg = malloc(64); |
2160 (*(char**)arg)[63] = 0; | 2157 (*(char**)arg)[63] = 0; |
2161 sub_name = 0; | 2158 sub_name = 0; |
2162 #ifdef USE_SUB | 2159 #ifdef USE_SUB |
2163 if(subdata) | 2160 if(subdata) |
2176 | 2173 |
2177 snprintf(*(char**)arg, 63, "(%d) %s%s", | 2174 snprintf(*(char**)arg, 63, "(%d) %s%s", |
2178 set_of_sub_pos + 1, | 2175 set_of_sub_pos + 1, |
2179 strlen(tmp) < 20 ? "" : "...", | 2176 strlen(tmp) < 20 ? "" : "...", |
2180 strlen(tmp) < 20 ? tmp : tmp+strlen(tmp)-19); | 2177 strlen(tmp) < 20 ? tmp : tmp+strlen(tmp)-19); |
2181 return 1; | 2178 return M_PROPERTY_OK; |
2182 } | 2179 } |
2183 #endif | 2180 #endif |
2184 if (demuxer->type == DEMUXER_TYPE_MATROSKA && dvdsub_id >= 0) { | 2181 if (demuxer->type == DEMUXER_TYPE_MATROSKA && dvdsub_id >= 0) { |
2185 char lang[40] = MSGTR_Unknown; | 2182 char lang[40] = MSGTR_Unknown; |
2186 demux_mkv_get_sub_lang(demuxer, dvdsub_id, lang, 9); | 2183 demux_mkv_get_sub_lang(demuxer, dvdsub_id, lang, 9); |
2187 snprintf(*(char**)arg, 63, "(%d) %s", dvdsub_id, lang); | 2184 snprintf(*(char**)arg, 63, "(%d) %s", dvdsub_id, lang); |
2188 return 1; | 2185 return M_PROPERTY_OK; |
2189 } | 2186 } |
2190 #ifdef HAVE_OGGVORBIS | 2187 #ifdef HAVE_OGGVORBIS |
2191 if (demuxer->type == DEMUXER_TYPE_OGG && d_dvdsub && dvdsub_id >= 0) { | 2188 if (demuxer->type == DEMUXER_TYPE_OGG && d_dvdsub && dvdsub_id >= 0) { |
2192 char *lang = demux_ogg_sub_lang(demuxer, dvdsub_id); | 2189 char *lang = demux_ogg_sub_lang(demuxer, dvdsub_id); |
2193 if (!lang) lang = MSGTR_Unknown; | 2190 if (!lang) lang = MSGTR_Unknown; |
2194 snprintf(*(char**)arg, 63, "(%d) %s", | 2191 snprintf(*(char**)arg, 63, "(%d) %s", |
2195 dvdsub_id, lang); | 2192 dvdsub_id, lang); |
2196 return 1; | 2193 return M_PROPERTY_OK; |
2197 } | 2194 } |
2198 #endif | 2195 #endif |
2199 if (vo_vobsub && vobsub_id >= 0) { | 2196 if (vo_vobsub && vobsub_id >= 0) { |
2200 const char *language = MSGTR_Unknown; | 2197 const char *language = MSGTR_Unknown; |
2201 language = vobsub_get_id(vo_vobsub, (unsigned int) vobsub_id); | 2198 language = vobsub_get_id(vo_vobsub, (unsigned int) vobsub_id); |
2202 snprintf(*(char**)arg, 63, "(%d) %s", | 2199 snprintf(*(char**)arg, 63, "(%d) %s", |
2203 vobsub_id, language ? language : MSGTR_Unknown); | 2200 vobsub_id, language ? language : MSGTR_Unknown); |
2204 return 1; | 2201 return M_PROPERTY_OK; |
2205 } | 2202 } |
2206 #ifdef USE_DVDREAD | 2203 #ifdef USE_DVDREAD |
2207 if (vo_spudec && dvdsub_id >= 0) { | 2204 if (vo_spudec && dvdsub_id >= 0) { |
2208 char lang[3]; | 2205 char lang[3]; |
2209 int code = dvd_lang_from_sid(stream, dvdsub_id); | 2206 int code = dvd_lang_from_sid(stream, dvdsub_id); |
2210 lang[0] = code >> 8; | 2207 lang[0] = code >> 8; |
2211 lang[1] = code; | 2208 lang[1] = code; |
2212 lang[2] = 0; | 2209 lang[2] = 0; |
2213 snprintf(*(char**)arg, 63, "(%d) %s", | 2210 snprintf(*(char**)arg, 63, "(%d) %s", |
2214 dvdsub_id, lang); | 2211 dvdsub_id, lang); |
2215 return 1; | 2212 return M_PROPERTY_OK; |
2216 } | 2213 } |
2217 #endif | 2214 #endif |
2218 snprintf(*(char**)arg, 63, MSGTR_Disabled); | 2215 snprintf(*(char**)arg, 63, MSGTR_Disabled); |
2219 return 1; | 2216 return M_PROPERTY_OK; |
2220 | 2217 |
2221 case M_PROPERTY_SET: | 2218 case M_PROPERTY_SET: |
2222 if(!arg) return 0; | 2219 if(!arg) return M_PROPERTY_ERROR; |
2223 if(*(int*)arg < -1) *(int*)arg = -1; | 2220 if(*(int*)arg < -1) *(int*)arg = -1; |
2224 else if(*(int*)arg >= global_sub_size) *(int*)arg = global_sub_size-1; | 2221 else if(*(int*)arg >= global_sub_size) *(int*)arg = global_sub_size-1; |
2225 global_sub_pos = *(int*)arg; | 2222 global_sub_pos = *(int*)arg; |
2226 break; | 2223 break; |
2227 case M_PROPERTY_STEP_UP: | 2224 case M_PROPERTY_STEP_UP: |
2331 d_dvdsub->id = dvdsub_id; | 2328 d_dvdsub->id = dvdsub_id; |
2332 spudec_reset(vo_spudec); | 2329 spudec_reset(vo_spudec); |
2333 } | 2330 } |
2334 #endif | 2331 #endif |
2335 | 2332 |
2336 return 1; | 2333 return M_PROPERTY_OK; |
2337 } | 2334 } |
2338 | 2335 |
2339 /// Subtitle delay (RW) | 2336 /// Subtitle delay (RW) |
2340 static int mp_property_sub_delay(m_option_t* prop,int action,void* arg) { | 2337 static int mp_property_sub_delay(m_option_t* prop,int action,void* arg) { |
2341 if(!sh_video) return M_PROPERTY_UNAVAILABLE; | 2338 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
2350 if(!sh_video || global_sub_pos < 0 || sub_source() != SUB_SOURCE_SUBS) | 2347 if(!sh_video || global_sub_pos < 0 || sub_source() != SUB_SOURCE_SUBS) |
2351 return M_PROPERTY_UNAVAILABLE; | 2348 return M_PROPERTY_UNAVAILABLE; |
2352 | 2349 |
2353 switch(action) { | 2350 switch(action) { |
2354 case M_PROPERTY_PRINT: | 2351 case M_PROPERTY_PRINT: |
2355 if(!arg) return 0; | 2352 if(!arg) return M_PROPERTY_ERROR; |
2356 M_PROPERTY_CLAMP(prop,sub_alignment); | 2353 M_PROPERTY_CLAMP(prop,sub_alignment); |
2357 *(char**)arg = strdup(name[sub_alignment]); | 2354 *(char**)arg = strdup(name[sub_alignment]); |
2358 return 1; | 2355 return M_PROPERTY_OK; |
2359 case M_PROPERTY_SET: | 2356 case M_PROPERTY_SET: |
2360 if(!arg) return 0; | 2357 if(!arg) return M_PROPERTY_ERROR; |
2361 case M_PROPERTY_STEP_UP: | 2358 case M_PROPERTY_STEP_UP: |
2362 case M_PROPERTY_STEP_DOWN: | 2359 case M_PROPERTY_STEP_DOWN: |
2363 vo_osd_changed(OSDTYPE_SUBTITLE); | 2360 vo_osd_changed(OSDTYPE_SUBTITLE); |
2364 default: | 2361 default: |
2365 return m_property_choice(prop,action,arg,&sub_alignment); | 2362 return m_property_choice(prop,action,arg,&sub_alignment); |
2374 #ifdef USE_SUB | 2371 #ifdef USE_SUB |
2375 if(!sh_video) return M_PROPERTY_UNAVAILABLE; | 2372 if(!sh_video) return M_PROPERTY_UNAVAILABLE; |
2376 | 2373 |
2377 switch(action) { | 2374 switch(action) { |
2378 case M_PROPERTY_SET: | 2375 case M_PROPERTY_SET: |
2379 if(!arg) return 0; | 2376 if(!arg) return M_PROPERTY_ERROR; |
2380 case M_PROPERTY_STEP_UP: | 2377 case M_PROPERTY_STEP_UP: |
2381 case M_PROPERTY_STEP_DOWN: | 2378 case M_PROPERTY_STEP_DOWN: |
2382 vo_osd_changed(OSDTYPE_SUBTITLE); | 2379 vo_osd_changed(OSDTYPE_SUBTITLE); |
2383 if(vo_spudec) vo_osd_changed(OSDTYPE_SPU); | 2380 if(vo_spudec) vo_osd_changed(OSDTYPE_SPU); |
2384 default: | 2381 default: |
2393 static int mp_property_sub_forced_only(m_option_t* prop,int action,void* arg) { | 2390 static int mp_property_sub_forced_only(m_option_t* prop,int action,void* arg) { |
2394 if(!vo_spudec) return M_PROPERTY_UNAVAILABLE; | 2391 if(!vo_spudec) return M_PROPERTY_UNAVAILABLE; |
2395 | 2392 |
2396 switch(action) { | 2393 switch(action) { |
2397 case M_PROPERTY_SET: | 2394 case M_PROPERTY_SET: |
2398 if(!arg) return 0; | 2395 if(!arg) return M_PROPERTY_ERROR; |
2399 case M_PROPERTY_STEP_UP: | 2396 case M_PROPERTY_STEP_UP: |
2400 case M_PROPERTY_STEP_DOWN: | 2397 case M_PROPERTY_STEP_DOWN: |
2401 m_property_flag(prop,action,arg,&forced_subs_only); | 2398 m_property_flag(prop,action,arg,&forced_subs_only); |
2402 spudec_set_forced_subs_only(vo_spudec,forced_subs_only); | 2399 spudec_set_forced_subs_only(vo_spudec,forced_subs_only); |
2403 return 1; | 2400 return M_PROPERTY_OK; |
2404 default: | 2401 default: |
2405 return m_property_flag(prop,action,arg,&forced_subs_only); | 2402 return m_property_flag(prop,action,arg,&forced_subs_only); |
2406 } | 2403 } |
2407 | 2404 |
2408 } | 2405 } |
2421 tvi_handle_t* tvh = demuxer->priv; | 2418 tvi_handle_t* tvh = demuxer->priv; |
2422 if(demuxer->type != DEMUXER_TYPE_TV || !tvh) return M_PROPERTY_UNAVAILABLE; | 2419 if(demuxer->type != DEMUXER_TYPE_TV || !tvh) return M_PROPERTY_UNAVAILABLE; |
2423 | 2420 |
2424 switch(action) { | 2421 switch(action) { |
2425 case M_PROPERTY_SET: | 2422 case M_PROPERTY_SET: |
2426 if(!arg) return 0; | 2423 if(!arg) return M_PROPERTY_ERROR; |
2427 M_PROPERTY_CLAMP(prop,*(int*)arg); | 2424 M_PROPERTY_CLAMP(prop,*(int*)arg); |
2428 return tv_set_color_options(tvh,(int)prop->priv,*(int*)arg); | 2425 return tv_set_color_options(tvh,(int)prop->priv,*(int*)arg); |
2429 case M_PROPERTY_GET: | 2426 case M_PROPERTY_GET: |
2430 return tv_get_color_options(tvh,(int)prop->priv,arg); | 2427 return tv_get_color_options(tvh,(int)prop->priv,arg); |
2431 case M_PROPERTY_STEP_UP: | 2428 case M_PROPERTY_STEP_UP: |
2432 case M_PROPERTY_STEP_DOWN: | 2429 case M_PROPERTY_STEP_DOWN: |
2433 if((r = tv_get_color_options(tvh,(int)prop->priv,&val)) >= 0) { | 2430 if((r = tv_get_color_options(tvh,(int)prop->priv,&val)) >= 0) { |
2434 if(!r) return 0; | 2431 if(!r) return M_PROPERTY_ERROR; |
2435 val += (arg ? *(int*)arg : 1) * | 2432 val += (arg ? *(int*)arg : 1) * |
2436 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); | 2433 (action == M_PROPERTY_STEP_DOWN ? -1 : 1); |
2437 M_PROPERTY_CLAMP(prop,val); | 2434 M_PROPERTY_CLAMP(prop,val); |
2438 return tv_set_color_options(tvh,(int)prop->priv,val); | 2435 return tv_set_color_options(tvh,(int)prop->priv,val); |
2439 } | 2436 } |
2440 return 0; | 2437 return M_PROPERTY_ERROR; |
2441 } | 2438 } |
2442 return M_PROPERTY_NOT_IMPLEMENTED; | 2439 return M_PROPERTY_NOT_IMPLEMENTED; |
2443 } | 2440 } |
2444 | 2441 |
2445 #endif | 2442 #endif |