[FFmpeg-cvslog] mxfdec: Move mxf_read_packet*() near the bottom of the file

Tomas Härdin git at videolan.org
Sun Dec 18 23:30:41 CET 2011


ffmpeg | branch: master | Tomas Härdin <tomas.hardin at codemill.se> | Fri Dec 16 09:19:01 2011 +0100| [31029e30fa99d3d44403901850a00ce8e69b42dd] | committer: Tomas Härdin

mxfdec: Move mxf_read_packet*() near the bottom of the file

This simplifies future commits.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=31029e30fa99d3d44403901850a00ce8e69b42dd
---

 libavformat/mxfdec.c |  222 +++++++++++++++++++++++++-------------------------
 1 files changed, 111 insertions(+), 111 deletions(-)

diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 17eadbf..8447da5 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -380,117 +380,6 @@ static int mxf_decrypt_triplet(AVFormatContext *s, AVPacket *pkt, KLVPacket *klv
     return 0;
 }
 
-static int mxf_read_packet_old(AVFormatContext *s, AVPacket *pkt)
-{
-    KLVPacket klv;
-
-    while (!url_feof(s->pb)) {
-        if (klv_read_packet(&klv, s->pb) < 0)
-            return -1;
-        PRINT_KEY(s, "read packet", klv.key);
-        av_dlog(s, "size %"PRIu64" offset %#"PRIx64"\n", klv.length, klv.offset);
-        if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key)) {
-            int res = mxf_decrypt_triplet(s, pkt, &klv);
-            if (res < 0) {
-                av_log(s, AV_LOG_ERROR, "invalid encoded triplet\n");
-                return -1;
-            }
-            return 0;
-        }
-        if (IS_KLV_KEY(klv.key, mxf_essence_element_key) ||
-            IS_KLV_KEY(klv.key, mxf_avid_essence_element_key)) {
-            int index = mxf_get_stream_index(s, &klv);
-            if (index < 0) {
-                av_log(s, AV_LOG_ERROR, "error getting stream index %d\n", AV_RB32(klv.key+12));
-                goto skip;
-            }
-            if (s->streams[index]->discard == AVDISCARD_ALL)
-                goto skip;
-            /* check for 8 channels AES3 element */
-            if (klv.key[12] == 0x06 && klv.key[13] == 0x01 && klv.key[14] == 0x10) {
-                if (mxf_get_d10_aes3_packet(s->pb, s->streams[index], pkt, klv.length) < 0) {
-                    av_log(s, AV_LOG_ERROR, "error reading D-10 aes3 frame\n");
-                    return -1;
-                }
-            } else {
-                int ret = av_get_packet(s->pb, pkt, klv.length);
-                if (ret < 0)
-                    return ret;
-            }
-            pkt->stream_index = index;
-            pkt->pos = klv.offset;
-            return 0;
-        } else
-        skip:
-            avio_skip(s->pb, klv.length);
-    }
-    return AVERROR_EOF;
-}
-
-static int mxf_read_packet(AVFormatContext *s, AVPacket *pkt)
-{
-    MXFContext *mxf = s->priv_data;
-    AVIndexEntry *e;
-    int ret;
-    int64_t ret64;
-    KLVPacket klv;
-    AVStream *st;
-
-    /* TODO: better logic for this?
-     * only files that lack all index segments prior to the essence need this */
-    if (!s->pb->seekable && mxf->op != OPAtom || mxf->d10 || mxf->broken_index)
-        return mxf_read_packet_old(s, pkt);
-
-    if (mxf->current_stream >= s->nb_streams) {
-        mxf->current_edit_unit++;
-        mxf->current_stream = 0;
-    }
-
-    st = s->streams[mxf->current_stream];
-
-    if (mxf->current_edit_unit >= st->nb_index_entries)
-        return AVERROR_EOF;
-
-    e = &st->index_entries[mxf->current_edit_unit];
-
-    if ((ret64 = avio_seek(s->pb, e->pos, SEEK_SET)) < 0)
-        return ret64;
-
-    if (mxf->op == OPAtom) {
-        /* OPAtom - no KL, just essence */
-        if ((ret = av_get_packet(s->pb, pkt, e->size)) != e->size)
-            return ret < 0 ? ret : AVERROR_EOF;
-    } else {
-        /* read KL, read L bytes of essence */
-        if ((ret = klv_read_packet(&klv, s->pb)) < 0)
-            return ret;
-
-        /* untested, but looks OK */
-        if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key)) {
-            int res = mxf_decrypt_triplet(s, pkt, &klv);
-            if (res < 0) {
-                av_log(s, AV_LOG_ERROR, "invalid encoded triplet\n");
-                return -1;
-            }
-            return 0;
-        }
-
-        if ((ret = av_get_packet(s->pb, pkt, klv.length)) != klv.length)
-            return ret < 0 ? ret : AVERROR_EOF;
-
-        pkt->pos = e->pos;
-    }
-
-    if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO && mxf->ptses && mxf->current_edit_unit < mxf->nb_ptses) {
-        pkt->dts = mxf->current_edit_unit + mxf->first_dts;
-        pkt->pts = mxf->ptses[mxf->current_edit_unit];
-    }
-
-    pkt->stream_index = mxf->current_stream++;
-
-    return 0;
-}
-
 static int mxf_read_primer_pack(void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 {
     MXFContext *mxf = arg;
@@ -1826,6 +1715,117 @@ static int mxf_read_header(AVFormatContext *s, AVFormatParameters *ap)
     return mxf_parse_structural_metadata(mxf);
 }
 
+static int mxf_read_packet_old(AVFormatContext *s, AVPacket *pkt)
+{
+    KLVPacket klv;
+
+    while (!url_feof(s->pb)) {
+        if (klv_read_packet(&klv, s->pb) < 0)
+            return -1;
+        PRINT_KEY(s, "read packet", klv.key);
+        av_dlog(s, "size %"PRIu64" offset %#"PRIx64"\n", klv.length, klv.offset);
+        if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key)) {
+            int res = mxf_decrypt_triplet(s, pkt, &klv);
+            if (res < 0) {
+                av_log(s, AV_LOG_ERROR, "invalid encoded triplet\n");
+                return -1;
+            }
+            return 0;
+        }
+        if (IS_KLV_KEY(klv.key, mxf_essence_element_key) ||
+            IS_KLV_KEY(klv.key, mxf_avid_essence_element_key)) {
+            int index = mxf_get_stream_index(s, &klv);
+            if (index < 0) {
+                av_log(s, AV_LOG_ERROR, "error getting stream index %d\n", AV_RB32(klv.key+12));
+                goto skip;
+            }
+            if (s->streams[index]->discard == AVDISCARD_ALL)
+                goto skip;
+            /* check for 8 channels AES3 element */
+            if (klv.key[12] == 0x06 && klv.key[13] == 0x01 && klv.key[14] == 0x10) {
+                if (mxf_get_d10_aes3_packet(s->pb, s->streams[index], pkt, klv.length) < 0) {
+                    av_log(s, AV_LOG_ERROR, "error reading D-10 aes3 frame\n");
+                    return -1;
+                }
+            } else {
+                int ret = av_get_packet(s->pb, pkt, klv.length);
+                if (ret < 0)
+                    return ret;
+            }
+            pkt->stream_index = index;
+            pkt->pos = klv.offset;
+            return 0;
+        } else
+        skip:
+            avio_skip(s->pb, klv.length);
+    }
+    return AVERROR_EOF;
+}
+
+static int mxf_read_packet(AVFormatContext *s, AVPacket *pkt)
+{
+    MXFContext *mxf = s->priv_data;
+    AVIndexEntry *e;
+    int ret;
+    int64_t ret64;
+    KLVPacket klv;
+    AVStream *st;
+
+    /* TODO: better logic for this?
+     * only files that lack all index segments prior to the essence need this */
+    if (!s->pb->seekable && mxf->op != OPAtom || mxf->d10 || mxf->broken_index)
+        return mxf_read_packet_old(s, pkt);
+
+    if (mxf->current_stream >= s->nb_streams) {
+        mxf->current_edit_unit++;
+        mxf->current_stream = 0;
+    }
+
+    st = s->streams[mxf->current_stream];
+
+    if (mxf->current_edit_unit >= st->nb_index_entries)
+        return AVERROR_EOF;
+
+    e = &st->index_entries[mxf->current_edit_unit];
+
+    if ((ret64 = avio_seek(s->pb, e->pos, SEEK_SET)) < 0)
+        return ret64;
+
+    if (mxf->op == OPAtom) {
+        /* OPAtom - no KL, just essence */
+        if ((ret = av_get_packet(s->pb, pkt, e->size)) != e->size)
+            return ret < 0 ? ret : AVERROR_EOF;
+    } else {
+        /* read KL, read L bytes of essence */
+        if ((ret = klv_read_packet(&klv, s->pb)) < 0)
+            return ret;
+
+        /* untested, but looks OK */
+        if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key)) {
+            int res = mxf_decrypt_triplet(s, pkt, &klv);
+            if (res < 0) {
+                av_log(s, AV_LOG_ERROR, "invalid encoded triplet\n");
+                return -1;
+            }
+            return 0;
+        }
+
+        if ((ret = av_get_packet(s->pb, pkt, klv.length)) != klv.length)
+            return ret < 0 ? ret : AVERROR_EOF;
+
+        pkt->pos = e->pos;
+    }
+
+    if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO && mxf->ptses && mxf->current_edit_unit < mxf->nb_ptses) {
+        pkt->dts = mxf->current_edit_unit + mxf->first_dts;
+        pkt->pts = mxf->ptses[mxf->current_edit_unit];
+    }
+
+    pkt->stream_index = mxf->current_stream++;
+
+    return 0;
+}
+
 static int mxf_read_close(AVFormatContext *s)
 {
     MXFContext *mxf = s->priv_data;



More information about the ffmpeg-cvslog mailing list