History

lavf/mxfenc: Make write_desc return int

This enables returning AVERRORs

Tomas Härdin committed 2 years ago

Commit 0202c7c1 parent b9c99ba1 file · +38 −23Browse files

Unified · Split

libavformat/mxfenc.c+38−23
@@ -129,7 +129,7 @@ typedef struct MXFContainerEssenceEntry { · 128 unmodified lines
129129 UID container_ul;
130130 UID element_ul;
131131 UID codec_ul;
132− void (*write_desc)(AVFormatContext *, AVStream *);
132+ int (*write_desc)(AVFormatContext *, AVStream *);
133133 } MXFContainerEssenceEntry;
134134
135135 typedef struct MXFPackage {
@@ -170,14 +170,14 @@ static const struct { · 34 unmodified lines
170170 { AV_CODEC_ID_NONE }
171171 };
172172
173−static void mxf_write_wav_desc(AVFormatContext *s, AVStream *st);
174−static void mxf_write_aes3_desc(AVFormatContext *s, AVStream *st);
175−static void mxf_write_mpegvideo_desc(AVFormatContext *s, AVStream *st);
176−static void mxf_write_h264_desc(AVFormatContext *s, AVStream *st);
177−static void mxf_write_ffv1_desc(AVFormatContext *s, AVStream *st);
178−static void mxf_write_cdci_desc(AVFormatContext *s, AVStream *st);
179−static void mxf_write_generic_sound_desc(AVFormatContext *s, AVStream *st);
180−static void mxf_write_s436m_anc_desc(AVFormatContext *s, AVStream *st);
173+static int mxf_write_wav_desc(AVFormatContext *s, AVStream *st);
174+static int mxf_write_aes3_desc(AVFormatContext *s, AVStream *st);
175+static int mxf_write_mpegvideo_desc(AVFormatContext *s, AVStream *st);
176+static int mxf_write_h264_desc(AVFormatContext *s, AVStream *st);
177+static int mxf_write_ffv1_desc(AVFormatContext *s, AVStream *st);
178+static int mxf_write_cdci_desc(AVFormatContext *s, AVStream *st);
179+static int mxf_write_generic_sound_desc(AVFormatContext *s, AVStream *st);
180+static int mxf_write_s436m_anc_desc(AVFormatContext *s, AVStream *st);
181181
182182 static const MXFContainerEssenceEntry mxf_essence_container_uls[] = {
183183 { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x02,0x0D,0x01,0x03,0x01,0x02,0x04,0x60,0x01 },
@@ -1545,7 +1545,7 @@ static void mxf_write_jpeg2000_subdesc(AVFormatContext *s, AVStream *st) · 1361 unmodified lines
15451545 mxf_update_klv_size(pb, pos);
15461546 }
15471547
1548−static void mxf_write_cdci_desc(AVFormatContext *s, AVStream *st)
1548+static int mxf_write_cdci_desc(AVFormatContext *s, AVStream *st)
15491549 {
15501550 int64_t pos = mxf_write_cdci_common(s, st, mxf_cdci_descriptor_key);
15511551 mxf_update_klv_size(s->pb, pos);
@@ -1556,9 +1556,10 @@ static void mxf_write_cdci_desc(AVFormatContext *s, AVStream *st) · 4 unmodified lines
15561556 if (st->codecpar->codec_id == AV_CODEC_ID_JPEG2000) {
15571557 mxf_write_jpeg2000_subdesc(s, st);
15581558 }
1559+ return 0;
15591560 }
15601561
1561−static void mxf_write_h264_desc(AVFormatContext *s, AVStream *st)
1562+static int mxf_write_h264_desc(AVFormatContext *s, AVStream *st)
15621563 {
15631564 MXFStreamContext *sc = st->priv_data;
15641565 if (sc->avc_intra) {
@@ -1568,9 +1569,10 @@ static void mxf_write_h264_desc(AVFormatContext *s, AVStream *st) · 3 unmodified lines
15681569 mxf_update_klv_size(s->pb, pos);
15691570 mxf_write_avc_subdesc(s, st);
15701571 }
1572+ return 0;
15711573 }
15721574
1573−static void mxf_write_ffv1_subdesc(AVFormatContext *s, AVStream *st)
1575+static int mxf_write_ffv1_subdesc(AVFormatContext *s, AVStream *st)
15741576 {
15751577 AVIOContext *pb = s->pb;
15761578 MXFStreamContext *sc = st->priv_data;
@@ -1597,9 +1599,10 @@ static void mxf_write_ffv1_subdesc(AVFormatContext *s, AVStream *st) · 20 unmodified lines
15971599 }
15981600
15991601 mxf_update_klv_size(s->pb, pos);
1602+ return 0;
16001603 }
16011604
1602−static void mxf_write_ffv1_desc(AVFormatContext *s, AVStream *st)
1605+static int mxf_write_ffv1_desc(AVFormatContext *s, AVStream *st)
16031606 {
16041607 int is_rgb, pos;
16051608 const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(st->codecpar->format);
@@ -1608,16 +1611,17 @@ static void mxf_write_ffv1_desc(AVFormatContext *s, AVStream *st) · 2 unmodified lines
16081611
16091612 pos = mxf_write_cdci_common(s, st, is_rgb ? mxf_rgba_descriptor_key : mxf_cdci_descriptor_key);
16101613 mxf_update_klv_size(s->pb, pos);
1611− mxf_write_ffv1_subdesc(s, st);
1614+ return mxf_write_ffv1_subdesc(s, st);
16121615 }
16131616
1614−static void mxf_write_s436m_anc_desc(AVFormatContext *s, AVStream *st)
1617+static int mxf_write_s436m_anc_desc(AVFormatContext *s, AVStream *st)
16151618 {
16161619 int64_t pos = mxf_write_generic_desc(s, st, mxf_s436m_anc_descriptor_key);
16171620 mxf_update_klv_size(s->pb, pos);
1621+ return 0;
16181622 }
16191623
1620−static void mxf_write_mpegvideo_desc(AVFormatContext *s, AVStream *st)
1624+static int mxf_write_mpegvideo_desc(AVFormatContext *s, AVStream *st)
16211625 {
16221626 AVIOContext *pb = s->pb;
16231627 MXFStreamContext *sc = st->priv_data;
@@ -1653,6 +1657,7 @@ static void mxf_write_mpegvideo_desc(AVFormatContext *s, AVStream *st) · 29 unmodified lines
16531657 }
16541658
16551659 mxf_update_klv_size(pb, pos);
1660+ return 0;
16561661 }
16571662
16581663 static int64_t mxf_write_generic_sound_common(AVFormatContext *s, AVStream *st, const UID key)
@@ -1719,22 +1724,25 @@ static int64_t mxf_write_wav_common(AVFormatContext *s, AVStream *st, const UID · 60 unmodified lines
17191724 return pos;
17201725 }
17211726
1722−static void mxf_write_wav_desc(AVFormatContext *s, AVStream *st)
1727+static int mxf_write_wav_desc(AVFormatContext *s, AVStream *st)
17231728 {
17241729 int64_t pos = mxf_write_wav_common(s, st, mxf_wav_descriptor_key);
17251730 mxf_update_klv_size(s->pb, pos);
1731+ return 0;
17261732 }
17271733
1728−static void mxf_write_aes3_desc(AVFormatContext *s, AVStream *st)
1734+static int mxf_write_aes3_desc(AVFormatContext *s, AVStream *st)
17291735 {
17301736 int64_t pos = mxf_write_wav_common(s, st, mxf_aes3_descriptor_key);
17311737 mxf_update_klv_size(s->pb, pos);
1738+ return 0;
17321739 }
17331740
1734−static void mxf_write_generic_sound_desc(AVFormatContext *s, AVStream *st)
1741+static int mxf_write_generic_sound_desc(AVFormatContext *s, AVStream *st)
17351742 {
17361743 int64_t pos = mxf_write_generic_sound_common(s, st, mxf_generic_sound_descriptor_key);
17371744 mxf_update_klv_size(s->pb, pos);
1745+ return 0;
17381746 }
17391747
17401748 static const uint8_t mxf_indirect_value_utf16le[] = { 0x4c,0x00,0x02,0x10,0x01,0x00,0x00,0x00,0x00,0x06,0x0e,0x2b,0x34,0x01,0x04,0x01,0x01 };
@@ -1786,7 +1794,7 @@ static int mxf_write_user_comments(AVFormatContext *s, const AVDictionary *m) · 45 unmodified lines
17861794 return count;
17871795 }
17881796
1789−static void mxf_write_package(AVFormatContext *s, MXFPackage *package)
1797+static int mxf_write_package(AVFormatContext *s, MXFPackage *package)
17901798 {
17911799 MXFContext *mxf = s->priv_data;
17921800 AVIOContext *pb = s->pb;
@@ -1881,9 +1889,13 @@ static void mxf_write_package(AVFormatContext *s, MXFPackage *package) · 88 unmodified lines
18811889
18821890 if (package->type == SourcePackage && package->instance == 1) {
18831891 MXFStreamContext *sc = st->priv_data;
1884− mxf_essence_container_uls[sc->index].write_desc(s, st);
1892+ int ret = mxf_essence_container_uls[sc->index].write_desc(s, st);
1893+ if (ret < 0)
1894+ return ret;
18851895 }
18861896 }
1897+
1898+ return 0;
18871899 }
18881900
18891901 static int mxf_write_essence_container_data(AVFormatContext *s)
@@ -1951,8 +1963,11 @@ static int mxf_write_header_metadata_sets(AVFormatContext *s) · 61 unmodified lines
19511963 mxf_write_identification(s);
19521964 mxf_write_content_storage(s, packages, package_count);
19531965 mxf->track_instance_count = 0;
1954− for (i = 0; i < package_count; i++)
1955− mxf_write_package(s, &packages[i]);
1966+ for (i = 0; i < package_count; i++) {
1967+ int ret = mxf_write_package(s, &packages[i]);
1968+ if (ret < 0)
1969+ return ret;
1970+ }
19561971 mxf_write_essence_container_data(s);
19571972 return 0;
19581973 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t