changeset 23727:2de8f66b3570

Add a loop command and property.
author albeu
date Mon, 09 Jul 2007 14:52:46 +0000
parents 11abe5f3dcaa
children 3c2d3fadf94f
files DOCS/tech/slave.txt command.c etc/menu.conf help/help_mp-en.h input/input.c input/input.h
diffstat 6 files changed, 31 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/tech/slave.txt	Mon Jul 09 14:51:47 2007 +0000
+++ b/DOCS/tech/slave.txt	Mon Jul 09 14:52:46 2007 +0000
@@ -157,6 +157,10 @@
     If <append> is nonzero playback continues and the playlist file is
     appended to the current playlist instead.
 
+loop <value> [abs]
+    Adjust/set how many times the movie should be looped. -1 means no loop,
+    and 0 forever.
+
 menu <command>
     Execute an OSD menu command.
         up     Move cursor up.
@@ -397,6 +401,7 @@
 
 osdlevel           int       0       3       X   X   X    as -osdlevel
 speed              float     0.01    100     X   X   X    as -speed
+loop               int       -1              X   X   X    as -loop
 filename           string                    X            file playing wo path
 path               string                    X            file playing
 demuxer            string                    X            demuxer used
--- a/command.c	Mon Jul 09 14:51:47 2007 +0000
+++ b/command.c	Mon Jul 09 14:52:46 2007 +0000
@@ -157,6 +157,24 @@
     return m_property_choice(prop, action, arg, &osd_level);
 }
 
+/// Loop (RW)
+static int mp_property_loop(m_option_t * prop, int action, void *arg,
+                            MPContext * mpctx)
+{
+    switch (action) {
+    case M_PROPERTY_PRINT:
+        if (!arg) return M_PROPERTY_ERROR;
+        if (mpctx->loop_times < 0)
+            *(char**)arg = strdup("off");
+        else if (mpctx->loop_times == 0)
+            *(char**)arg = strdup("inf");
+        else
+            break;
+        return M_PROPERTY_OK;
+    }
+    return m_property_int_range(prop, action, arg, &mpctx->loop_times);
+}
+
 /// Playback speed (RW)
 static int mp_property_playback_speed(m_option_t * prop, int action,
 				      void *arg, MPContext * mpctx)
@@ -1488,6 +1506,8 @@
     // General
     { "osdlevel", mp_property_osdlevel, CONF_TYPE_INT,
      M_OPT_RANGE, 0, 3, NULL },
+    { "loop", mp_property_loop, CONF_TYPE_INT,
+     M_OPT_MIN, -1, 0, NULL },
     { "speed", mp_property_playback_speed, CONF_TYPE_FLOAT,
      M_OPT_RANGE, 0.01, 100.0, NULL },
     { "filename", mp_property_filename, CONF_TYPE_STRING,
@@ -1674,6 +1694,8 @@
     /// osd msg template
     const char *osd_msg;
 } set_prop_cmd[] = {
+    // general
+    { "loop", MP_CMD_LOOP, 0, 0, -1, MSGTR_LoopStatus },
     // audio
     { "volume", MP_CMD_VOLUME, 0, OSD_VOLUME, -1, MSGTR_Volume },
     { "mute", MP_CMD_MUTE, 1, 0, -1, MSGTR_MuteStatus },
--- a/etc/menu.conf	Mon Jul 09 14:51:47 2007 +0000
+++ b/etc/menu.conf	Mon Jul 09 14:52:46 2007 +0000
@@ -16,6 +16,7 @@
 <pref name="general_pref" title="General">
       <e property="osdlevel" name="OSD level"/>
       <e property="speed" name="Speed"/>
+      <e property="loop" name="Loop"/>
 </pref>
 
 <pref name="demuxer_pref" title="Demuxer">
--- a/help/help_mp-en.h	Mon Jul 09 14:51:47 2007 +0000
+++ b/help/help_mp-en.h	Mon Jul 09 14:52:46 2007 +0000
@@ -234,6 +234,7 @@
 #define MSGTR_Balance "Balance"
 
 // property state
+#define MSGTR_LoopStatus "Loop: %s"
 #define MSGTR_MuteStatus "Mute: %s"
 #define MSGTR_AVDelayStatus "A-V delay: %s"
 #define MSGTR_OnTopStatus "Stay on top: %s"
--- a/input/input.c	Mon Jul 09 14:51:47 2007 +0000
+++ b/input/input.c	Mon Jul 09 14:52:46 2007 +0000
@@ -65,6 +65,7 @@
   { MP_CMD_PLAY_TREE_STEP, "pt_step",1, { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT ,{0}}, {-1,{0}} } },
   { MP_CMD_PLAY_TREE_UP_STEP, "pt_up_step",1,  { { MP_CMD_ARG_INT,{0} }, { MP_CMD_ARG_INT ,{0}}, {-1,{0}} } },
   { MP_CMD_PLAY_ALT_SRC_STEP, "alt_src_step",1, { { MP_CMD_ARG_INT,{0} }, {-1,{0}} } },
+  { MP_CMD_LOOP, "loop", 1,  { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },
   { MP_CMD_SUB_DELAY, "sub_delay",1,  { {MP_CMD_ARG_FLOAT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },
   { MP_CMD_SUB_STEP, "sub_step",1,  { { MP_CMD_ARG_INT,{0} }, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },
   { MP_CMD_OSD, "osd",0, { {MP_CMD_ARG_INT,{-1}}, {-1,{0}} } },
--- a/input/input.h	Mon Jul 09 14:51:47 2007 +0000
+++ b/input/input.h	Mon Jul 09 14:52:46 2007 +0000
@@ -93,6 +93,7 @@
 #define MP_CMD_STEP_PROPERTY 91
 #define MP_CMD_RADIO_STEP_FREQ 92
 #define MP_CMD_TV_STEP_FREQ 93
+#define MP_CMD_LOOP 94
 #define MP_CMD_BALANCE 96
 #define MP_CMD_SUB_SCALE 97