[Mplayer-cvslog] CVS: mpg12play/mpeg2dec/src Makefile.am,NONE,1.1 Makefile.in,NONE,1.1 cpu_accel.c,NONE,1.1 extract_mpeg2.c,NONE,1.1 mpeg2dec.c,NONE,1.1 mpeg2dec.c~,NONE,1.1
Gernot Ziegler
madmac at users.sourceforge.net
Thu May 24 15:31:07 CEST 2001
- Previous message: [Mplayer-cvslog] CVS: mpg12play/mpeg2dec/libvo Makefile.am,NONE,1.1 Makefile.in,NONE,1.1 configure.incl,NONE,1.1 hw_bes.h,NONE,1.1 video_out.c,NONE,1.1 video_out_internal.h,NONE,1.1 video_out_mga.c,NONE,1.1 video_out_null.c,NONE,1.1 video_out_pgm.c,NONE,1.1 video_out_sdl.c,NONE,1.1 video_out_x11.c,NONE,1.1 yuv2rgb.c,NONE,1.1 yuv2rgb.h,NONE,1.1 yuv2rgb_mlib.c,NONE,1.1 yuv2rgb_mmx.c,NONE,1.1
- Next message: [Mplayer-cvslog] CVS: mpg12play/mpeg2dec/test Makefile.am,NONE,1.1 Makefile.in,NONE,1.1 README,NONE,1.1 regression,NONE,1.1 tek-525,NONE,1.1 tek-625,NONE,1.1 tests,NONE,1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/mplayer/mpg12play/mpeg2dec/src
In directory usw-pr-cvs1:/tmp/cvs-serv2994/mpeg2dec/src
Added Files:
Makefile.am Makefile.in cpu_accel.c extract_mpeg2.c mpeg2dec.c
mpeg2dec.c~
Log Message:
New mpegp version - only once.
--- NEW FILE ---
bin_PROGRAMS = mpeg2dec extract_mpeg2
mpeg2dec_SOURCES = mpeg2dec.c
mpeg2dec_LDADD = $(top_builddir)/libmpeg2/libmpeg2.la \
$(top_builddir)/libvo/libvo.la \
libmpeg2dec.la
extract_mpeg2_SOURCES = extract_mpeg2.c
lib_LTLIBRARIES = libmpeg2dec.la
libmpeg2dec_la_SOURCES = cpu_accel.c
libmpeg2dec_la_LDFLAGS = -no-undefined
--- NEW FILE ---
# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
AS = @AS@
CC = @CC@
DLLTOOL = @DLLTOOL@
INCLUDES = @INCLUDES@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
VERSION = @VERSION@
bin_PROGRAMS = mpeg2dec extract_mpeg2
mpeg2dec_SOURCES = mpeg2dec.c
mpeg2dec_LDADD = $(top_builddir)/libmpeg2/libmpeg2.la $(top_builddir)/libvo/libvo.la libmpeg2dec.la
extract_mpeg2_SOURCES = extract_mpeg2.c
lib_LTLIBRARIES = libmpeg2dec.la
libmpeg2dec_la_SOURCES = cpu_accel.c
libmpeg2dec_la_LDFLAGS = -no-undefined
mkinstalldirs = $(SHELL) $(top_srcdir)/autotools/mkinstalldirs
CONFIG_HEADER = ../include/config.h
CONFIG_CLEAN_FILES =
LTLIBRARIES = $(lib_LTLIBRARIES)
DEFS = @DEFS@ -I. -I$(srcdir) -I../include
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
libmpeg2dec_la_LIBADD =
libmpeg2dec_la_OBJECTS = cpu_accel.lo
PROGRAMS = $(bin_PROGRAMS)
mpeg2dec_OBJECTS = mpeg2dec.o
mpeg2dec_DEPENDENCIES = $(top_builddir)/libmpeg2/libmpeg2.la \
$(top_builddir)/libvo/libvo.la libmpeg2dec.la
mpeg2dec_LDFLAGS =
extract_mpeg2_OBJECTS = extract_mpeg2.o
extract_mpeg2_LDADD = $(LDADD)
extract_mpeg2_DEPENDENCIES =
extract_mpeg2_LDFLAGS =
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
DIST_COMMON = Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = gtar
GZIP_ENV = --best
DEP_FILES = .deps/cpu_accel.P .deps/extract_mpeg2.P .deps/mpeg2dec.P
SOURCES = $(libmpeg2dec_la_SOURCES) $(mpeg2dec_SOURCES) $(extract_mpeg2_SOURCES)
OBJECTS = $(libmpeg2dec_la_OBJECTS) $(mpeg2dec_OBJECTS) $(extract_mpeg2_OBJECTS)
all: all-redirect
.SUFFIXES:
.SUFFIXES: .S .c .lo .o .s
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
mostlyclean-libLTLIBRARIES:
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
distclean-libLTLIBRARIES:
maintainer-clean-libLTLIBRARIES:
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(libdir)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
else :; fi; \
done
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
list='$(lib_LTLIBRARIES)'; for p in $$list; do \
$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
done
.s.o:
$(COMPILE) -c $<
.S.o:
$(COMPILE) -c $<
mostlyclean-compile:
-rm -f *.o core *.core
clean-compile:
distclean-compile:
-rm -f *.tab.c
maintainer-clean-compile:
.s.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
.S.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
maintainer-clean-libtool:
libmpeg2dec.la: $(libmpeg2dec_la_OBJECTS) $(libmpeg2dec_la_DEPENDENCIES)
$(LINK) -rpath $(libdir) $(libmpeg2dec_la_LDFLAGS) $(libmpeg2dec_la_OBJECTS) $(libmpeg2dec_la_LIBADD) $(LIBS)
mostlyclean-binPROGRAMS:
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
distclean-binPROGRAMS:
maintainer-clean-binPROGRAMS:
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(bindir)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
list='$(bin_PROGRAMS)'; for p in $$list; do \
rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
done
mpeg2dec: $(mpeg2dec_OBJECTS) $(mpeg2dec_DEPENDENCIES)
@rm -f mpeg2dec
$(LINK) $(mpeg2dec_LDFLAGS) $(mpeg2dec_OBJECTS) $(mpeg2dec_LDADD) $(LIBS)
extract_mpeg2: $(extract_mpeg2_OBJECTS) $(extract_mpeg2_DEPENDENCIES)
@rm -f extract_mpeg2
$(LINK) $(extract_mpeg2_LDFLAGS) $(extract_mpeg2_OBJECTS) $(extract_mpeg2_LDADD) $(LIBS)
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP)
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $$unique $(LISP)
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = src
distdir: $(DISTFILES)
here=`cd $(top_builddir) && pwd`; \
top_distdir=`cd $(top_distdir) && pwd`; \
distdir=`cd $(distdir) && pwd`; \
cd $(top_srcdir) \
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/Makefile
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-include $(DEP_FILES)
mostlyclean-depend:
clean-depend:
distclean-depend:
-rm -rf .deps
maintainer-clean-depend:
%.o: %.c
@echo '$(COMPILE) -c $<'; \
$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
@-cp .deps/$(*F).pp .deps/$(*F).P; \
tr ' ' '\012' < .deps/$(*F).pp \
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
>> .deps/$(*F).P; \
rm .deps/$(*F).pp
%.lo: %.c
@echo '$(LTCOMPILE) -c $<'; \
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
< .deps/$(*F).pp > .deps/$(*F).P; \
tr ' ' '\012' < .deps/$(*F).pp \
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
>> .deps/$(*F).P; \
rm -f .deps/$(*F).pp
info-am:
info: info-am
dvi-am:
dvi: dvi-am
check-am: all-am
check: check-am
installcheck-am:
installcheck: installcheck-am
install-exec-am: install-libLTLIBRARIES install-binPROGRAMS
install-exec: install-exec-am
install-data-am:
install-data: install-data-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am: uninstall-libLTLIBRARIES uninstall-binPROGRAMS
uninstall: uninstall-am
all-am: Makefile $(LTLIBRARIES) $(PROGRAMS)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir)
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \
mostlyclean-libtool mostlyclean-binPROGRAMS \
mostlyclean-tags mostlyclean-depend mostlyclean-generic
mostlyclean: mostlyclean-am
clean-am: clean-libLTLIBRARIES clean-compile clean-libtool \
clean-binPROGRAMS clean-tags clean-depend clean-generic \
mostlyclean-am
clean: clean-am
distclean-am: distclean-libLTLIBRARIES distclean-compile \
distclean-libtool distclean-binPROGRAMS distclean-tags \
distclean-depend distclean-generic clean-am
-rm -f libtool
distclean: distclean-am
maintainer-clean-am: maintainer-clean-libLTLIBRARIES \
maintainer-clean-compile maintainer-clean-libtool \
maintainer-clean-binPROGRAMS maintainer-clean-tags \
maintainer-clean-depend maintainer-clean-generic \
distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
maintainer-clean: maintainer-clean-am
.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
distclean-compile clean-compile maintainer-clean-compile \
mostlyclean-libtool distclean-libtool clean-libtool \
maintainer-clean-libtool mostlyclean-binPROGRAMS distclean-binPROGRAMS \
clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \
install-binPROGRAMS tags mostlyclean-tags distclean-tags clean-tags \
maintainer-clean-tags distdir mostlyclean-depend distclean-depend \
clean-depend maintainer-clean-depend info-am info dvi-am dvi check \
check-am installcheck-am installcheck install-exec-am install-exec \
install-data-am install-data install-am install uninstall-am uninstall \
all-redirect all-am all installdirs mostlyclean-generic \
distclean-generic clean-generic maintainer-clean-generic clean \
mostlyclean distclean maintainer-clean
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
--- NEW FILE ---
/*
* cpu_accel.c
* Copyright (C) 1999-2001 Aaron Holtzman <aholtzma at ess.engr.uvic.ca>
*
* This file is part of mpeg2dec, a free MPEG-2 video stream decoder.
*
* mpeg2dec is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* mpeg2dec is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "config.h"
#include <inttypes.h>
#include "mm_accel.h"
#ifdef ARCH_X86
static uint32_t x86_accel (void)
{
uint32_t eax, ebx, ecx, edx;
int AMD;
uint32_t caps;
#define cpuid(op,eax,ebx,ecx,edx) \
asm ("cpuid" \
: "=a" (eax), \
"=b" (ebx), \
"=c" (ecx), \
"=d" (edx) \
: "a" (op) \
: "cc")
asm ("pushfl\n\t"
"popl %0\n\t"
"movl %0,%1\n\t"
"xorl $0x200000,%0\n\t"
"pushl %0\n\t"
"popfl\n\t"
"pushfl\n\t"
"popl %0"
: "=a" (eax),
"=b" (ebx)
:
: "cc");
if (eax == ebx) /* no cpuid */
return 0;
cpuid (0x00000000, eax, ebx, ecx, edx);
if (!eax) /* vendor string only */
return 0;
AMD = (ebx == 0x68747541) && (ecx == 0x444d4163) && (edx == 0x69746e65);
cpuid (0x00000001, eax, ebx, ecx, edx);
if (! (edx & 0x00800000)) /* no MMX */
return 0;
caps = MM_ACCEL_X86_MMX;
if (edx & 0x02000000) /* SSE - identical to AMD MMX extensions */
caps = MM_ACCEL_X86_MMX | MM_ACCEL_X86_MMXEXT;
cpuid (0x80000000, eax, ebx, ecx, edx);
if (eax < 0x80000001) /* no extended capabilities */
return caps;
cpuid (0x80000001, eax, ebx, ecx, edx);
if (edx & 0x80000000)
caps |= MM_ACCEL_X86_3DNOW;
if (AMD && (edx & 0x00400000)) /* AMD MMX extensions */
caps |= MM_ACCEL_X86_MMXEXT;
return caps;
}
#endif
uint32_t mm_accel (void)
{
#ifdef ARCH_X86
static int got_accel = 0;
static uint32_t accel;
if (!got_accel) {
got_accel = 1;
accel = x86_accel ();
}
return accel;
#else
return 0;
#endif
}
--- NEW FILE ---
/*
* extract_mpeg2.c
* Copyright (C) 1999-2001 Aaron Holtzman <aholtzma at ess.engr.uvic.ca>
*
* This file is part of mpeg2dec, a free MPEG-2 video stream decoder.
*
* mpeg2dec is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* mpeg2dec is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <inttypes.h>
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#else
#include <unistd.h>
#endif
#define BUFFER_SIZE 262144
static uint8_t buffer[BUFFER_SIZE];
static FILE * in_file;
static void print_usage (char * argv[])
{
fprintf (stderr, "usage: %s file\n", argv[0]);
exit (1);
}
static void handle_args (int argc, char * argv[])
{
int c;
if ((c = getopt (argc,argv,"")) != -1) {
print_usage (argv);
}
if (optind < argc) {
in_file = fopen (argv[optind], "rb");
if (!in_file) {
fprintf (stderr, "%s - couldnt open file %s\n", strerror (errno),
argv[optind]);
exit (1);
}
} else
in_file = stdin;
}
static void ps_loop (void)
{
static int mpeg1_skip_table[16] = {
1, 0xffff, 5, 10, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff
};
uint8_t * buf;
uint8_t * end;
uint8_t * tmp1;
uint8_t * tmp2;
int complain_loudly;
complain_loudly = 1;
buf = buffer;
do {
end = buf + fread (buf, 1, buffer + BUFFER_SIZE - buf, in_file);
buf = buffer;
while (buf + 4 <= end) {
/* check start code */
if (buf[0] || buf[1] || (buf[2] != 0x01)) {
if (complain_loudly) {
fprintf (stderr, "missing start code at %#lx\n",
ftell (in_file) - (end - buf));
if ((buf[0] == 0) && (buf[1] == 0) && (buf[2] == 0))
fprintf (stderr, "this stream appears to use "
"zero-byte padding before start codes,\n"
"which is not correct according to the "
"mpeg system standard.\n"
"mp1e was one encoder known to do this "
"before version 1.8.0.\n");
complain_loudly = 0;
}
buf++;
continue;
}
switch (buf[3]) {
case 0xb9: /* program end code */
return;
case 0xba: /* pack header */
/* skip */
if ((buf[4] & 0xc0) == 0x40) /* mpeg2 */
tmp1 = buf + 14 + (buf[13] & 7);
else if ((buf[4] & 0xf0) == 0x20) /* mpeg1 */
tmp1 = buf + 12;
else if (buf + 5 > end)
goto copy;
else {
fprintf (stderr, "weird pack header\n");
exit (1);
}
if (tmp1 > end)
goto copy;
buf = tmp1;
break;
case 0xe0: /* video */
tmp2 = buf + 6 + (buf[4] << 8) + buf[5];
if (tmp2 > end)
goto copy;
if ((buf[6] & 0xc0) == 0x80) /* mpeg2 */
tmp1 = buf + 9 + buf[8];
else { /* mpeg1 */
for (tmp1 = buf + 6; *tmp1 == 0xff; tmp1++)
if (tmp1 == buf + 6 + 16) {
fprintf (stderr, "too much stuffing\n");
buf = tmp2;
break;
}
if ((*tmp1 & 0xc0) == 0x40)
tmp1 += 2;
tmp1 += mpeg1_skip_table [*tmp1 >> 4];
}
if (tmp1 < tmp2)
fwrite (tmp1, tmp2-tmp1, 1, stdout);
buf = tmp2;
break;
default:
if (buf[3] < 0xb9) {
fprintf (stderr,
"looks like a video stream, not system stream\n");
exit (1);
}
/* skip */
tmp1 = buf + 6 + (buf[4] << 8) + buf[5];
if (tmp1 > end)
goto copy;
buf = tmp1;
break;
}
}
if (buf < end) {
copy:
/* we only pass here for mpeg1 ps streams */
memmove (buffer, buf, end - buf);
}
buf = buffer + (end - buf);
} while (end == buffer + BUFFER_SIZE);
}
int main (int argc,char *argv[])
{
handle_args (argc, argv);
ps_loop ();
return 0;
}
--- NEW FILE ---
/*
* mpeg2dec.c
* Copyright (C) 1999-2001 Aaron Holtzman <aholtzma at ess.engr.uvic.ca>
*
* This file is part of mpeg2dec, a free MPEG-2 video stream decoder.
*
* mpeg2dec is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* mpeg2dec is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <signal.h>
#include <string.h>
#include <errno.h>
#include <inttypes.h>
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#else
#include <unistd.h>
#endif
#include "video_out.h"
#include "mpeg2.h"
#include "mm_accel.h"
#define BUFFER_SIZE 262144
static uint8_t buffer[BUFFER_SIZE];
static FILE * in_file;
static uint32_t frame_counter = 0;
static struct timeval tv_beg, tv_end, tv_start;
static uint32_t elapsed;
static uint32_t total_elapsed;
static uint32_t last_count = 0;
static uint32_t demux_ps = 0;
static mpeg2dec_t mpeg2dec;
static vo_open_t * output_open = NULL;
static void print_fps (int final)
{
int fps, tfps, frames;
gettimeofday (&tv_end, NULL);
if (frame_counter++ == 0) {
tv_start = tv_beg = tv_end;
}
elapsed = (tv_end.tv_sec - tv_beg.tv_sec) * 100 +
(tv_end.tv_usec - tv_beg.tv_usec) / 10000;
total_elapsed = (tv_end.tv_sec - tv_start.tv_sec) * 100 +
(tv_end.tv_usec - tv_start.tv_usec) / 10000;
if (final) {
if (total_elapsed)
tfps = frame_counter * 10000 / total_elapsed;
else
tfps = 0;
fprintf (stderr,"\n%d frames decoded in %d.%02d "
"seconds (%d.%02d fps)\n", frame_counter,
total_elapsed / 100, total_elapsed % 100,
tfps / 100, tfps % 100);
return;
}
if (elapsed < 50) /* only display every 0.50 seconds */
return;
tv_beg = tv_end;
frames = frame_counter - last_count;
fps = frames * 10000 / elapsed; /* 100x */
tfps = frame_counter * 10000 / total_elapsed; /* 100x */
fprintf (stderr, "%d frames in %d.%02d sec (%d.%02d fps), "
"%d last %d.%02d sec (%d.%02d fps)\033[K\r", frame_counter,
total_elapsed / 100, total_elapsed % 100,
tfps / 100, tfps % 100, frames, elapsed / 100, elapsed % 100,
fps / 100, fps % 100);
last_count = frame_counter;
}
static RETSIGTYPE signal_handler (int sig)
{
print_fps (1);
signal (sig, SIG_DFL);
raise (sig);
}
static void print_usage (char * argv[])
{
int i;
vo_driver_t * drivers;
fprintf (stderr, "usage: %s [-o mode] [-s] file\n"
"\t-s\tuse program stream demultiplexer\n"
"\t-o\tvideo output mode\n", argv[0]);
drivers = vo_drivers ();
for (i = 0; drivers[i].name; i++)
fprintf (stderr, "\t\t\t%s\n", drivers[i].name);
exit (1);
}
static void handle_args (int argc, char * argv[])
{
int c;
vo_driver_t * drivers;
int i;
drivers = vo_drivers ();
while ((c = getopt (argc,argv,"so:")) != -1) {
switch (c) {
case 'o':
for (i=0; drivers[i].name != NULL; i++)
if (strcmp (drivers[i].name, optarg) == 0)
output_open = drivers[i].open;
if (output_open == NULL) {
fprintf (stderr, "Invalid video driver: %s\n", optarg);
print_usage (argv);
}
break;
case 's':
demux_ps = 1;
break;
default:
print_usage (argv);
}
}
/* -o not specified, use a default driver */
if (output_open == NULL)
output_open = drivers[0].open;
if (optind < argc) {
in_file = fopen (argv[optind], "rb");
if (!in_file) {
fprintf (stderr, "%s - couldnt open file %s\n", strerror (errno),
argv[optind]);
exit (1);
}
} else
in_file = stdin;
}
static void ps_loop (void)
{
static int mpeg1_skip_table[16] = {
1, 0xffff, 5, 10, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff
};
uint8_t * buf;
uint8_t * end;
uint8_t * tmp1;
uint8_t * tmp2;
int complain_loudly;
complain_loudly = 1;
buf = buffer;
do {
end = buf + fread (buf, 1, buffer + BUFFER_SIZE - buf, in_file);
buf = buffer;
while (buf + 4 <= end) {
/* check start code */
if (buf[0] || buf[1] || (buf[2] != 0x01)) {
if (complain_loudly) {
fprintf (stderr, "missing start code at %#lx\n",
ftell (in_file) - (end - buf));
if ((buf[0] == 0) && (buf[1] == 0) && (buf[2] == 0))
fprintf (stderr, "this stream appears to use "
"zero-byte padding before start codes,\n"
"which is not correct according to the "
"mpeg system standard.\n"
"mp1e was one encoder known to do this "
"before version 1.8.0.\n");
complain_loudly = 0;
}
buf++;
continue;
}
switch (buf[3]) {
case 0xb9: /* program end code */
return;
case 0xba: /* pack header */
/* skip */
if ((buf[4] & 0xc0) == 0x40) /* mpeg2 */
tmp1 = buf + 14 + (buf[13] & 7);
else if ((buf[4] & 0xf0) == 0x20) /* mpeg1 */
tmp1 = buf + 12;
else if (buf + 5 > end)
goto copy;
else {
fprintf (stderr, "weird pack header\n");
exit (1);
}
if (tmp1 > end)
goto copy;
buf = tmp1;
break;
case 0xe0: /* video */
tmp2 = buf + 6 + (buf[4] << 8) + buf[5];
if (tmp2 > end)
goto copy;
if ((buf[6] & 0xc0) == 0x80) /* mpeg2 */
tmp1 = buf + 9 + buf[8];
else { /* mpeg1 */
for (tmp1 = buf + 6; *tmp1 == 0xff; tmp1++)
if (tmp1 == buf + 6 + 16) {
fprintf (stderr, "too much stuffing\n");
buf = tmp2;
break;
}
if ((*tmp1 & 0xc0) == 0x40)
tmp1 += 2;
tmp1 += mpeg1_skip_table [*tmp1 >> 4];
}
if (tmp1 < tmp2) {
int num_frames;
num_frames = mpeg2_decode_data (&mpeg2dec, tmp1, tmp2);
while (num_frames--)
print_fps (0);
}
buf = tmp2;
break;
default:
if (buf[3] < 0xb9) {
fprintf (stderr,
"looks like a video stream, not system stream\n");
exit (1);
}
/* skip */
tmp1 = buf + 6 + (buf[4] << 8) + buf[5];
if (tmp1 > end)
goto copy;
buf = tmp1;
break;
}
}
if (buf < end) {
copy:
/* we only pass here for mpeg1 ps streams */
memmove (buffer, buf, end - buf);
}
buf = buffer + (end - buf);
} while (end == buffer + BUFFER_SIZE);
}
static void es_loop (void)
{
uint8_t * end;
int num_frames;
do {
end = buffer + fread (buffer, 1, BUFFER_SIZE, in_file);
num_frames = mpeg2_decode_data (&mpeg2dec, buffer, end);
while (num_frames--)
print_fps (0);
} while (end == buffer + BUFFER_SIZE);
}
int main (int argc,char *argv[])
{
vo_instance_t * output;
uint32_t accel;
fprintf (stderr, PACKAGE"-"VERSION
" (C) 2000-2001 Aaron Holtzman <aholtzma at ess.engr.uvic.ca>\n");
handle_args (argc, argv);
accel = mm_accel () | MM_ACCEL_MLIB | MM_ACCEL_R10K;
vo_accel (accel);
output = vo_open (output_open);
if (output == NULL) {
fprintf (stderr, "Can not open output\n");
return 1;
}
mpeg2_init (&mpeg2dec, accel, output);
signal (SIGINT, signal_handler);
gettimeofday (&tv_beg, NULL);
if (demux_ps)
ps_loop ();
else
es_loop ();
mpeg2_close (&mpeg2dec);
vo_close (output);
print_fps (1);
return 0;
}
--- NEW FILE ---
/*
* mpeg2dec.c
* Copyright (C) 1999-2001 Aaron Holtzman <aholtzma at ess.engr.uvic.ca>
*
* This file is part of mpeg2dec, a free MPEG-2 video stream decoder.
*
* mpeg2dec is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* mpeg2dec is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <signal.h>
#include <string.h>
#include <errno.h>
#include <inttypes.h>
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#else
#include <unistd.h>
#endif
#include "video_out.h"
#include "mpeg2.h"
#include "mm_accel.h"
#define BUFFER_SIZE 262144
static uint8_t buffer[BUFFER_SIZE];
static FILE * in_file;
static uint32_t frame_counter = 0;
static struct timeval tv_beg, tv_end, tv_start;
static uint32_t elapsed;
static uint32_t total_elapsed;
static uint32_t last_count = 0;
static uint32_t demux_ps = 0;
static mpeg2dec_t mpeg2dec;
static vo_open_t * output_open = NULL;
static void print_fps (int final)
{
int fps, tfps, frames;
gettimeofday (&tv_end, NULL);
if (frame_counter++ == 0) {
tv_start = tv_beg = tv_end;
}
elapsed = (tv_end.tv_sec - tv_beg.tv_sec) * 100 +
(tv_end.tv_usec - tv_beg.tv_usec) / 10000;
total_elapsed = (tv_end.tv_sec - tv_start.tv_sec) * 100 +
(tv_end.tv_usec - tv_start.tv_usec) / 10000;
if (final) {
if (total_elapsed)
tfps = frame_counter * 10000 / total_elapsed;
else
tfps = 0;
fprintf (stderr,"\n%d frames decoded in %d.%02d "
"seconds (%d.%02d fps)\n", frame_counter,
total_elapsed / 100, total_elapsed % 100,
tfps / 100, tfps % 100);
return;
}
if (elapsed < 50) /* only display every 0.50 seconds */
return;
tv_beg = tv_end;
frames = frame_counter - last_count;
fps = frames * 10000 / elapsed; /* 100x */
tfps = frame_counter * 10000 / total_elapsed; /* 100x */
fprintf (stderr, "%d frames in %d.%02d sec (%d.%02d fps), "
"%d last %d.%02d sec (%d.%02d fps)\033[K\r", frame_counter,
total_elapsed / 100, total_elapsed % 100,
tfps / 100, tfps % 100, frames, elapsed / 100, elapsed % 100,
fps / 100, fps % 100);
last_count = frame_counter;
}
static RETSIGTYPE signal_handler (int sig)
{
print_fps (1);
signal (sig, SIG_DFL);
raise (sig);
}
static void print_usage (char * argv[])
{
int i;
vo_driver_t * drivers;
fprintf (stderr, "usage: %s [-o mode] [-s] file\n"
"\t-s\tuse program stream demultiplexer\n"
"\t-o\tvideo output mode\n", argv[0]);
drivers = vo_drivers ();
for (i = 0; drivers[i].name; i++)
fprintf (stderr, "\t\t\t%s\n", drivers[i].name);
exit (1);
}
static void handle_args (int argc, char * argv[])
{
int c;
vo_driver_t * drivers;
int i;
drivers = vo_drivers ();
while ((c = getopt (argc,argv,"so:")) != -1) {
switch (c) {
case 'o':
for (i=0; drivers[i].name != NULL; i++)
if (strcmp (drivers[i].name, optarg) == 0)
output_open = drivers[i].open;
if (output_open == NULL) {
fprintf (stderr, "Invalid video driver: %s\n", optarg);
print_usage (argv);
}
break;
case 's':
demux_ps = 1;
break;
default:
print_usage (argv);
}
}
/* -o not specified, use a default driver */
if (output_open == NULL)
output_open = drivers[0].open;
if (optind < argc) {
in_file = fopen (argv[optind], "rb");
if (!in_file) {
fprintf (stderr, "%s - couldnt open file %s\n", strerror (errno),
argv[optind]);
exit (1);
}
} else
in_file = stdin;
}
static void ps_loop (void)
{
static int mpeg1_skip_table[16] = {
1, 0xffff, 5, 10, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff
};
uint8_t * buf;
uint8_t * end;
uint8_t * tmp1;
uint8_t * tmp2;
int complain_loudly;
complain_loudly = 1;
buf = buffer;
do {
end = buf + fread (buf, 1, buffer + BUFFER_SIZE - buf, in_file);
buf = buffer;
while (buf + 4 <= end) {
/* check start code */
if (buf[0] || buf[1] || (buf[2] != 0x01)) {
if (complain_loudly) {
fprintf (stderr, "missing start code at %#lx\n",
ftell (in_file) - (end - buf));
if ((buf[0] == 0) && (buf[1] == 0) && (buf[2] == 0))
fprintf (stderr, "this stream appears to use "
"zero-byte padding before start codes,\n"
"which is not correct according to the "
"mpeg system standard.\n"
"mp1e was one encoder known to do this "
"before version 1.8.0.\n");
complain_loudly = 0;
}
buf++;
continue;
}
switch (buf[3]) {
case 0xb9: /* program end code */
return;
case 0xba: /* pack header */
/* skip */
if ((buf[4] & 0xc0) == 0x40) /* mpeg2 */
tmp1 = buf + 14 + (buf[13] & 7);
else if ((buf[4] & 0xf0) == 0x20) /* mpeg1 */
tmp1 = buf + 12;
else if (buf + 5 > end)
goto copy;
else {
fprintf (stderr, "weird pack header\n");
exit (1);
}
if (tmp1 > end)
goto copy;
buf = tmp1;
break;
case 0xe0: /* video */
tmp2 = buf + 6 + (buf[4] << 8) + buf[5];
if (tmp2 > end)
goto copy;
if ((buf[6] & 0xc0) == 0x80) /* mpeg2 */
tmp1 = buf + 9 + buf[8];
else { /* mpeg1 */
for (tmp1 = buf + 6; *tmp1 == 0xff; tmp1++)
if (tmp1 == buf + 6 + 16) {
fprintf (stderr, "too much stuffing\n");
buf = tmp2;
break;
}
if ((*tmp1 & 0xc0) == 0x40)
tmp1 += 2;
tmp1 += mpeg1_skip_table [*tmp1 >> 4];
}
if (tmp1 < tmp2) {
int num_frames;
num_frames = mpeg2_decode_data (&mpeg2dec, tmp1, tmp2);
while (num_frames--)
print_fps (0);
}
buf = tmp2;
break;
default:
if (buf[3] < 0xb9) {
fprintf (stderr,
"looks like a video stream, not system stream\n");
exit (1);
}
/* skip */
tmp1 = buf + 6 + (buf[4] << 8) + buf[5];
if (tmp1 > end)
goto copy;
buf = tmp1;
break;
}
}
if (buf < end) {
copy:
/* we only pass here for mpeg1 ps streams */
memmove (buffer, buf, end - buf);
}
buf = buffer + (end - buf);
} while (end == buffer + BUFFER_SIZE);
}
static void es_loop (void)
{
uint8_t * end;
int num_frames;
do {
end = buffer + fread (buffer, 1, BUFFER_SIZE, in_file);
num_frames = mpeg2_decode_data (&mpeg2dec, buffer, end);
while (num_frames--)
print_fps (0);
} while (end == buffer + BUFFER_SIZE);
}
int main (int argc,char *argv[])
{
vo_instance_t * output;
uint32_t accel;
fprintf (stderr, PACKAGE"-"VERSION
" (C) 2000-2001 Aaron Holtzman <aholtzma at ess.engr.uvic.ca>\n");
handle_args (argc, argv);
accel = mm_accel () | MM_ACCEL_MLIB;
vo_accel (accel);
output = vo_open (output_open);
if (output == NULL) {
fprintf (stderr, "Can not open output\n");
return 1;
}
mpeg2_init (&mpeg2dec, accel, output);
signal (SIGINT, signal_handler);
gettimeofday (&tv_beg, NULL);
if (demux_ps)
ps_loop ();
else
es_loop ();
mpeg2_close (&mpeg2dec);
vo_close (output);
print_fps (1);
return 0;
}
_______________________________________________
Mplayer-cvslog mailing list
Mplayer-cvslog at lists.sourceforge.net
http://lists.sourceforge.net/lists/listinfo/mplayer-cvslog
- Previous message: [Mplayer-cvslog] CVS: mpg12play/mpeg2dec/libvo Makefile.am,NONE,1.1 Makefile.in,NONE,1.1 configure.incl,NONE,1.1 hw_bes.h,NONE,1.1 video_out.c,NONE,1.1 video_out_internal.h,NONE,1.1 video_out_mga.c,NONE,1.1 video_out_null.c,NONE,1.1 video_out_pgm.c,NONE,1.1 video_out_sdl.c,NONE,1.1 video_out_x11.c,NONE,1.1 yuv2rgb.c,NONE,1.1 yuv2rgb.h,NONE,1.1 yuv2rgb_mlib.c,NONE,1.1 yuv2rgb_mmx.c,NONE,1.1
- Next message: [Mplayer-cvslog] CVS: mpg12play/mpeg2dec/test Makefile.am,NONE,1.1 Makefile.in,NONE,1.1 README,NONE,1.1 regression,NONE,1.1 tek-525,NONE,1.1 tek-625,NONE,1.1 tests,NONE,1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the MPlayer-cvslog
mailing list