From d5a36f752ceb7840d03236adcd62ddb7f2078b00 Mon Sep 17 00:00:00 2001
From: ranma <ranma@b3059339-0415-0410-9bf9-f77b7e298cf2>
Date: Wed, 23 Oct 2002 15:48:56 +0000
Subject: [PATCH] add -identify switch

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7865 b3059339-0415-0410-9bf9-f77b7e298cf2
---
 DOCS/German/mplayer.1 |  5 +++++
 DOCS/mplayer.1        |  5 +++++
 cfg-mplayer.h         |  1 +
 mplayer.c             | 30 ++++++++++++++++++++++++++++++
 4 files changed, 41 insertions(+)

diff --git a/DOCS/German/mplayer.1 b/DOCS/German/mplayer.1
index 1d553849d6..a09232a043 100644
--- a/DOCS/German/mplayer.1
+++ b/DOCS/German/mplayer.1
@@ -937,6 +937,11 @@ Zeigt eine kurze Zusammenfassung der Optionen.
 .B \-hardframedrop (siehe auch \-framedrop Option)
 Intensiveres Framedropping (unterbricht die Dekodierung). F�hrt zu Bildverzerrungen!
 .TP
+.B \-identify
+Zeigt die Dateiparameter in einem leicht weiter zu verarbeitendem Format an.
+Das Script TOOLS/midentify unterdr�ckt andere Ausgaben von MPlayer und f�hrt ein
+Shellescaping der Dateinamen durch.
+.TP
 .B \-include <Konfigurationsdatei>
 Gibt eine Konfigurationsdatei an, welche nach der normalen ausgewertet werden soll.
 .TP
diff --git a/DOCS/mplayer.1 b/DOCS/mplayer.1
index 3389d74d40..463f8f869b 100644
--- a/DOCS/mplayer.1
+++ b/DOCS/mplayer.1
@@ -217,6 +217,11 @@ Show short summary of options.
 More intense frame dropping (breaks decoding).
 Leads to image distortion!
 .TP
+.B \-identify
+Show file parameters in easy parsable format.  The wrapper script
+TOOLS/midentify suppresses the other mplayer output and (hopefully)
+shellescapes the filenames.
+.TP
 .B \-input <commands>
 This option can be used to configure certain parts of the input system.
 Paths are relative to ~/\:.mplayer/.
diff --git a/cfg-mplayer.h b/cfg-mplayer.h
index 5479e1de32..bf113b27bf 100644
--- a/cfg-mplayer.h
+++ b/cfg-mplayer.h
@@ -378,6 +378,7 @@ static config_t mplayer_opts[]={
 #include "cfg-common.h"
 #undef MAIN_CONF
         
+	{"identify", &identify, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
 	{"quiet", &quiet, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
 	{"noquiet", &quiet, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
 	{"verbose", &verbose, CONF_TYPE_INT, CONF_RANGE|CONF_GLOBAL, 0, 100, NULL},
diff --git a/mplayer.c b/mplayer.c
index 176e06ca12..0a0e178c1f 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -67,6 +67,7 @@
 
 int slave_mode=0;
 int verbose=0;
+int identify=0;
 static int quiet=0;
 
 #define ABS(x) (((x)>=0)?(x):(-(x)))
@@ -1148,6 +1149,35 @@ if(sh_audio){
   mp_msg(MSGT_CPLAYER,MSGL_INFO,"==========================================================================\n");
 }
 
+if(identify) {
+  mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_FILENAME=%s\n", filename);
+  if (sh_video) {
+    /* Assume FOURCC if all bytes >= 0x20 (' ') */
+    if (sh_video->format >= 0x20202020)
+      mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_VIDEO_FORMAT=%.4s\n", &sh_video->format);
+    else
+      mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_VIDEO_FORMAT=%d\n", sh_video->format);
+    mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_VIDEO_BITRATE=%d\n", sh_video->i_bps*8);
+    mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_VIDEO_WIDTH=%d\n", sh_video->disp_w);
+    mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_VIDEO_HEIGHT=%d\n", sh_video->disp_h);
+    mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_VIDEO_FPS=%5.3f\n", sh_video->fps);
+    mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_VIDEO_ASPECT=%1.2f\n", sh_video->aspect);
+  }
+  if (sh_audio) {
+    if (sh_audio->codec)
+      mp_msg(MSGT_GLOBAL,MSGL_INFO, "ID_AUDIO_CODEC=%s\n", sh_audio->codec->name);
+    /* Assume FOURCC if all bytes >= 0x20 (' ') */
+    if (sh_audio->format >= 0x20202020)
+      mp_msg(MSGT_GLOBAL,MSGL_INFO, "ID_AUDIO_FORMAT=%.4s\n", &sh_audio->format);
+    else
+      mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_AUDIO_FORMAT=%d\n", sh_audio->format);
+    mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_AUDIO_BITRATE=%d\n", sh_audio->i_bps*8);
+    mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_AUDIO_RATE=%d\n", sh_audio->samplerate);
+    mp_msg(MSGT_GLOBAL,MSGL_INFO,"ID_AUDIO_NCH=%d\n", sh_audio->channels);
+  }
+  goto goto_next_file;
+}
+
 if(!sh_video) goto main; // audio-only
 
 //================== Init VIDEO (codec & libvo) ==========================