]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
* useless commit - ignore
authorkabi <kabi@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Mon, 11 Nov 2002 09:37:40 +0000 (09:37 +0000)
committerkabi <kabi@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Mon, 11 Nov 2002 09:37:40 +0000 (09:37 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@1193 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/avcodec.c

index e0e0496a1806daa2807ffcec6d7896c4f67cde28..c82b773c65f3d147e72effa0c2cdc27da9b6e7b6 100644 (file)
@@ -8,12 +8,16 @@
 // private structure used to hide all internal memory allocations
 // and structures used for de/encoding - end user should
 // never see any complicated structure
-typedef struct
+typedef struct private_handle
 {
     AVCodec* avcodec;
     AVCodecContext avcontext;
+    struct private_handle* next;
+    struct private_handle* prev;
 } private_handle_t;
 
+static private_handle_t* handle_first = 0;
+
 static AVCodec* avcodec_find_by_fcc(uint32_t fcc)
 {
     // translation table
@@ -23,7 +27,7 @@ static AVCodec* avcodec_find_by_fcc(uint32_t fcc)
     } lc[] = {
        { CODEC_ID_H263, { MKTAG('U', '2', '6', '3'), 0 } },
        { CODEC_ID_H263I, { MKTAG('I', '2', '6', '3'), 0 } },
-       { CODEC_ID_MSMPEG4, { MKTAG('D', 'I', 'V', '3'), 0 } },
+       { CODEC_ID_MSMPEG4V3, { MKTAG('D', 'I', 'V', '3'), 0 } },
        { CODEC_ID_MPEG4, { MKTAG('D', 'I', 'V', 'X'),  MKTAG('D', 'X', '5', '0'), 0 } },
        { CODEC_ID_MSMPEG4V2, { MKTAG('M', 'P', '4', '2'), 0 } },
        { CODEC_ID_MJPEG, { MKTAG('M', 'J', 'P', 'G'), 0 } },
@@ -51,10 +55,22 @@ static private_handle_t* create_handle()
     private_handle_t* t = malloc(sizeof(private_handle_t));
     if (!t)
        return NULL;
+    memset(t, 0, sizeof(*t));
 
     // register and fill
-    avcodec_init();
-    avcodec_register_all();
+    if (!handle_first)
+    {
+       avcodec_init();
+       avcodec_register_all();
+        handle_first = t;
+    }
+    else
+    {
+        t->prev = handle_first->next;
+       handle_first->next = t;
+       t->next = handle_first;
+    }
+
     return t;
 }