[MPlayer-dev-eng] PATCH [0/12] CoreAVC support (Take 3)

Alan Nisota alannisota at gmail.com
Tue Feb 27 21:30:23 CET 2007

Well, I am going to try to send these patches again.

As a reminder, these patches add support for the CoreAVC directshow 
filter, which supports AVC1, as well as h264 with MBAFF and PAFF.

Here is an updated set of patches.  I've rolled in all issues I'm aware 
of.  There are still 12 patches, but some unnecessary ones were replaced 
with new ones.  I'm not sure which ones I've modified, and which I 
haven't since I refreshed them all.  Sorry about that.  To avoid 
confusion, I've started a new thread, and I'll include all patches as 
replies to this one.  I hope no one minds.

001mpg2fmt.patch: This adds support for sending the input format in a
MPEG2Video header, which is required by CoreAVC for AVC1 decoding as it
seems to only support this format for retrieving the quantization coeffs.

002dstfmt.patch: Ignore an error on connecting the output pin on filter 
loading.  The code will always call SetDestFmt afterwards with a valid 
output format, so it should succeed or fail at that point.  I tried 
using EnumMediaFormats, but CoreAVC gets angry if the VIDEOINFOHEADER 
type changes after initialization, and it outputs VIDEOINFOHEADER2 with 
EnumMediaFormats.  this solutions just seemed simpler.

003dshowclose.patch: This fixes a segfault when closing down CoreAVC. It 
doesn't affect normal mplayer playback but would impact any case where 
the filter needs to be used multiple times within a session (it is 
required for the mythTV variant of this patch)

004avc1mov.patch: allow both 'avc1' and 'AVC1' streams to be processed

005pecompact2.patch: adds support for the PECompact2 dll compression
tool.  We need to hook SIGSEGV because PECompact2 uses this to swap from
the compressed to uncompressed image on the fly.

006cpu.patch: adds support for multiple CPUs.  It enables Semaphores and
Mutexes to work properly as well.

007widereg.patch: adds support for Querying registry items as wide
strings.  the strings are always stored as standard char strings, so it
just converts back-and-forth

008newfunc.patch: adds several support for several new functions to
win32.c  Note the 'UNDEFF' macro is used to prevent certain functions
from being stubbed.  If they are, stubbed, the codec doesn't work properly.

009threaddisp.patch: an optional patch that shows the threadid in win32
debug messages.  It also changes the return of CreateThread from a
pointer to the pthread_t element to the element itself (making it easier
to see which threads are created where)

010stub.patch: This adds a return value to win32 stubbed apps.  These 
used to be present in older versions of mplayer, and are required for 

011checkstub.patch: This patch reuses a previously defined stub if one 
exists for the current function.  The patch isn't needed for mplayer, 
however for the port to mythtv, the codec is initialized multiple times 
(each time a new program is started), and we quickly run out of stubs.

012regedit.patch: Adds a new file 'modify_reg.c' that can be used to add
items to the registry.
build as: gcc -o regedit -I. loader/modify_reg.c

series (for quilt users):
001mpg2fmt.patch -p0
002dstfmt.patch -p0
003dshowclose.patch -p0
004avc1mov.patch -p0
005pecompact2.patch -p0
006cpu.patch -p0
007widereg.patch -p0
008newfunc.patch -p0
009threaddisp.patch -p0
010stub.patch -p0
011checkstub.patch -p0
012regedit.patch -p0

More information about the MPlayer-dev-eng mailing list