⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avidump.c

📁 完整的RTP RTSP代码库
💻 C
字号:
/* * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is MPEG4IP. *  * The Initial Developer of the Original Code is Cisco Systems Inc. * Portions created by Cisco Systems Inc. are * Copyright (C) Cisco Systems Inc. 2001.  All Rights Reserved. *  * Contributor(s):  *		Dave Mackie		dmackie@cisco.com *		Bill May		wmay@cisco.com */#include <math.h>#include <mpeg4ip.h>#include <mpeg4ip_getopt.h>#include <avilib.h>/* globals */char* progName;static struct {  const char *name;  int value;} audio_names[] = {  {"UNKNOWN", 0x0000},  {"PCM", 0x0001},  {"ADPCM", 0x0002},  {"IBM_CVSD", 0x0005},  {"ALAW", 0x0006},  {"MULAW", 0x0007},  {"OKI_ADPCM", 0x0010},  {"DVI_ADPCM", 0x0011},  {"DIGISTD", 0x0015},  {"DIGIFIX", 0x0016},  {"YAMAHA_ADPCM", 0x0020},  {"DSP_TRUESPEECH", 0x0022},  {"GSM610", 0x0031},  {"MP3", 0x0055},  {"IBMMULAW", 0x0101},  {"IBMALAW", 0x0102},  {"IBMADPCM", 0x0103},  { NULL, 0}, };static dump_video_sizes (avi_t* aviFile){  long frames = AVI_video_frames(aviFile);  long ix;  for (ix = 0; ix < frames; ix++) {    fprintf(stdout, "    frame %lu size %lu\n", ix + 1, AVI_frame_size(aviFile, ix));  }}static const char *usage=":[--video-track-dump] <filename> ...\n";/* *avidump * required arg1 should be file to check */ int main(int argc, char** argv){  /* internal variables */  char* aviFileName = NULL;  avi_t* aviFile = NULL;  uint32_t numVideoFrames;  int ix, format;  const char *aname;  bool dump_video_track = false;    /* begin process command line */  progName = argv[0];  while (1) {    int c = -1;    int option_index = 0;    static struct option long_options[] = {      { "version", 0, 0, 'V'},      { "help", 0, 0, '?'},      { "video-track-dump", 0, 0, 'v'},      { NULL, 0, 0, 0 }    };    c = getopt_long_only(argc, argv, "Vh",			 long_options, &option_index);        if (c == -1)      break;    switch (c) {    case '?':      fprintf(stderr, "%s%s\n", progName, usage);       return (0);    case 'V':      fprintf(stderr, "%s - %s version %s\n", progName,	      MPEG4IP_PACKAGE, MPEG4IP_VERSION);      return (0);    case 'v':      dump_video_track = true;      break;    default:      fprintf(stderr, "%s: unknown option specified, ignoring: %c\n", 	      progName, c);    }  }  /* check that we have at least two non-option arguments */  if ((argc - optind) < 1) {    fprintf(stderr, 	    "usage: %s%s\n",	    progName, usage);    exit(1);  }  fprintf(stderr, "%s - %s version %s\n",	  progName, MPEG4IP_PACKAGE, MPEG4IP_VERSION);  /* point to the specified file names */  while (optind < argc) {    aviFileName = argv[optind++];    if (aviFileName == NULL) return (0);    /* open the AVI file */    aviFile = AVI_open_input_file(aviFileName, TRUE);    if (aviFile == NULL) {      fprintf(stderr, 	      "%s: error %s: %s\n",	      progName, aviFileName, AVI_strerror());      exit(4);    }    fprintf(stdout, "%s\n", aviFileName);    numVideoFrames = AVI_video_frames(aviFile);    if (numVideoFrames != 0) {      fprintf(stdout, "Video Information\n");      fprintf(stdout,	      "   Video compressor: %s\n",	      AVI_video_compressor(aviFile));      fprintf(stdout,	      "   Video frame rate: %g\n", 	      AVI_video_frame_rate(aviFile));      fprintf(stdout, "   Number of frames: %u\n", numVideoFrames);      fprintf(stdout, "   Video height    : %d\n", AVI_video_height(aviFile));      fprintf(stdout, "   Video width     : %d\n", AVI_video_width(aviFile));      if (dump_video_track) 	dump_video_sizes(aviFile);    } else {      fprintf(stdout, "No video frames\n");    }    if (AVI_audio_bytes(aviFile) != 0) {      fprintf(stdout, "Audio information:\n");      fprintf(stdout, "   Audio channels: %d\n", AVI_audio_channels(aviFile));      fprintf(stdout, "   Audio bits/sample: %d\n", AVI_audio_bits(aviFile));      format = AVI_audio_format(aviFile);      for (ix = 0, aname = NULL;	   aname == NULL && audio_names[ix].name != NULL;	   ix++) {	if (audio_names[ix].value == format) {	  aname = audio_names[ix].name;	}      }      if (aname == NULL) aname = "Format not in list";      fprintf(stdout, "   Audio format: %d %s\n", format, aname);      fprintf(stdout, "   Audio sample rate: %ld\n", AVI_audio_rate(aviFile));      fprintf(stdout, "   Audio bytes: %ld\n", AVI_audio_bytes(aviFile));    } else {      fprintf(stdout, "No audio track\n");    }    /* cleanup */    AVI_close(aviFile);  }  return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -