#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
+#include <errno.h>
#define MAX_READ 1024
-#define MAX_FILENAME 256
+#define MAX_FILENAME 32
+#define MAX_VER_ID 64
+
+/*
+info:
+http://www.dv.co.yu/mpgscript/mpeghdr.htm
+*/
int main (int argc,char **argv)
{
- int file_fd; /* desc fir file */
- char buf[MAX_READ]; /* buffer for the actual info */
+ int file_fd,exit,count;
+ unsigned char buf;
+ unsigned char header[3];
+ char mpeg_ver_id[MAX_VER_ID];
char filename[MAX_FILENAME];
- strcpy(argv[1],filename);
+ strcpy(filename,argv[1]);
if((file_fd=open(filename,O_RDONLY))<=0) {
puts("open failed");
return -23;
}
- if((read(file_fd,&buf,MAX_READ))<=MAX_READ) {
- puts("read failed");
- return -23;
+ count=0;
+ exit=0;
+ while(!exit) {
+ printf("count=%d\n",count++);
+ read(file_fd,&buf,1);
+ if(buf==0xff) {
+ read(file_fd,&buf,1);
+ if(buf>=0xe0) {
+ puts("got frame header:");
+ exit=1;
+ header[0]=buf;
+ read(file_fd,header+1,2);
+
+ printf("debug: %x%x%x \n",header[0],header[1],header[2]);
+
+ if(((header[0]&0x18)>>3)==0x00) strcpy(mpeg_ver_id,"MPEG Version 2.5");
+ else if(((header[0]&0x18)>>3)==0x10) strcpy(mpeg_ver_id,"MPEG Version 2 (ISO/IEC 13818-3)");
+ else if(((header[0]&0x18)>>3)==0x11) strcpy(mpeg_ver_id,"MPEG Version 1 (ISO/IEC 11172-3)");
+ else strcpy(mpeg_ver_id,"unknown");
+
+ printf("version: %s\n",mpeg_ver_id);
+ }
+ }
}
- printf(" -> %s",buf);
+ close(file_fd);
puts("");
puts("done");