[FFmpeg-devel] [PATCH] mxfdec: make it work with other calling conventions
Baptiste Coudurier
baptiste.coudurier
Tue Jun 29 22:02:05 CEST 2010
On 6/29/10 11:51 AM, Reimar D?ffinger wrote:
> On Tue, Jun 29, 2010 at 08:30:01PM +0200, Reimar D?ffinger wrote:
>> Hello,
>> currently mxfdec assumes that it can unpunished pass more arguments to functions
>> than they were declared with.
>> This is not true in general, in particular not for stdcall.
>> While I am not aware of any FFmpeg platform using it, IMHO this code is still
>> wrong.
>> Attached is a patch that fixes it, and I think it is not particularly bad.
>> It also fixes the last remaining warnings ("function declaration is not a prototype")
>> in that file.
I don't have this warning.
gcc version 4.4.4 (Ubuntu 4.4.4-6ubuntu2)
> Now actually working (had a break instead of a continue there in one place)...
>
>
> mxfdec.diff
>
>
> Index: libavformat/mxfdec.c
> ===================================================================
> --- libavformat/mxfdec.c (revision 23891)
> +++ libavformat/mxfdec.c (working copy)
> @@ -139,9 +139,12 @@
> Clip,
> };
>
> +#define METADATA_READ_FUNC(name) int name(void *arg, ByteIOContext *pb, int tag, int size, UID uid)
I don't like the #define.
> [...]
>
> @@ -919,11 +931,14 @@
> url_fseek(s->pb, klv.offset, SEEK_SET);
> break;
> }
> + if (IS_KLV_KEY(klv.key, mxf_primer_pack_key)) {
> + mxf_read_primer_pack(mxf);
> + continue;
> + }
>
> for (metadata = mxf_metadata_read_table; metadata->read; metadata++) {
> if (IS_KLV_KEY(klv.key, metadata->key)) {
> - int (*read)() = klv.key[5] == 0x53 ? mxf_read_local_tags : metadata->read;
> - if (read(mxf,&klv, metadata->read, metadata->ctx_size, metadata->type)< 0) {
> + if (mxf_read_local_tags(mxf,&klv, metadata->read, metadata->ctx_size, metadata->type)< 0) {
This mechanism makes it easier to add new functions.
Several metadata use 0x53 and it is needed later.
--
Baptiste COUDURIER
Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer http://www.ffmpeg.org
More information about the ffmpeg-devel
mailing list