From: Anton Khirnov <an...@khirnov.net>

The function currently accepts a PutBitContext and a GetBitContext,
which hardcodes their sizes into the lavc ABI. Since the function is
quite small and only called in a few places, the simplest solution is
making it inline, thus avoiding a runtime dependency completely.
---
 libavcodec/mpeg4audio.c | 40 ----------------------------------------
 libavcodec/mpeg4audio.h | 40 +++++++++++++++++++++++++++++++++++++++-
 2 files changed, 39 insertions(+), 41 deletions(-)

diff --git a/libavcodec/mpeg4audio.c b/libavcodec/mpeg4audio.c
index af8e6552ff..e321bcca83 100644
--- a/libavcodec/mpeg4audio.c
+++ b/libavcodec/mpeg4audio.c
@@ -145,43 +145,3 @@ int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, 
const uint8_t *buf,
 
     return specific_config_bitindex;
 }
-
-static av_always_inline unsigned int copy_bits(PutBitContext *pb,
-                                               GetBitContext *gb,
-                                               int bits)
-{
-    unsigned int el = get_bits(gb, bits);
-    put_bits(pb, bits, el);
-    return el;
-}
-
-int avpriv_copy_pce_data(PutBitContext *pb, GetBitContext *gb)
-{
-    int five_bit_ch, four_bit_ch, comment_size, bits;
-    int offset = put_bits_count(pb);
-
-    copy_bits(pb, gb, 10);                  //Tag, Object Type, Frequency
-    five_bit_ch  = copy_bits(pb, gb, 4);    //Front
-    five_bit_ch += copy_bits(pb, gb, 4);    //Side
-    five_bit_ch += copy_bits(pb, gb, 4);    //Back
-    four_bit_ch  = copy_bits(pb, gb, 2);    //LFE
-    four_bit_ch += copy_bits(pb, gb, 3);    //Data
-    five_bit_ch += copy_bits(pb, gb, 4);    //Coupling
-    if (copy_bits(pb, gb, 1))               //Mono Mixdown
-        copy_bits(pb, gb, 4);
-    if (copy_bits(pb, gb, 1))               //Stereo Mixdown
-        copy_bits(pb, gb, 4);
-    if (copy_bits(pb, gb, 1))               //Matrix Mixdown
-        copy_bits(pb, gb, 3);
-    for (bits = five_bit_ch*5+four_bit_ch*4; bits > 16; bits -= 16)
-        copy_bits(pb, gb, 16);
-    if (bits)
-        copy_bits(pb, gb, bits);
-    avpriv_align_put_bits(pb);
-    align_get_bits(gb);
-    comment_size = copy_bits(pb, gb, 8);
-    for (; comment_size > 0; comment_size--)
-        copy_bits(pb, gb, 8);
-
-    return put_bits_count(pb) - offset;
-}
diff --git a/libavcodec/mpeg4audio.h b/libavcodec/mpeg4audio.h
index 2eef2205bd..d2ce232485 100644
--- a/libavcodec/mpeg4audio.h
+++ b/libavcodec/mpeg4audio.h
@@ -104,7 +104,45 @@ enum AudioObjectType {
 
 #define MAX_PCE_SIZE 304 ///<Maximum size of a PCE including the 3-bit ID_PCE
                          ///<marker and the comment
+                         //
+static av_always_inline unsigned int avpriv_pce_copy_bits(PutBitContext *pb,
+                                                          GetBitContext *gb,
+                                                          int bits)
+{
+    unsigned int el = get_bits(gb, bits);
+    put_bits(pb, bits, el);
+    return el;
+}
 
-int avpriv_copy_pce_data(PutBitContext *pb, GetBitContext *gb);
+static av_always_inline int avpriv_copy_pce_data(PutBitContext *pb, 
GetBitContext *gb)
+{
+    int five_bit_ch, four_bit_ch, comment_size, bits;
+    int offset = put_bits_count(pb);
+
+    avpriv_pce_copy_bits(pb, gb, 10);                  //Tag, Object Type, 
Frequency
+    five_bit_ch  = avpriv_pce_copy_bits(pb, gb, 4);    //Front
+    five_bit_ch += avpriv_pce_copy_bits(pb, gb, 4);    //Side
+    five_bit_ch += avpriv_pce_copy_bits(pb, gb, 4);    //Back
+    four_bit_ch  = avpriv_pce_copy_bits(pb, gb, 2);    //LFE
+    four_bit_ch += avpriv_pce_copy_bits(pb, gb, 3);    //Data
+    five_bit_ch += avpriv_pce_copy_bits(pb, gb, 4);    //Coupling
+    if (avpriv_pce_copy_bits(pb, gb, 1))               //Mono Mixdown
+        avpriv_pce_copy_bits(pb, gb, 4);
+    if (avpriv_pce_copy_bits(pb, gb, 1))               //Stereo Mixdown
+        avpriv_pce_copy_bits(pb, gb, 4);
+    if (avpriv_pce_copy_bits(pb, gb, 1))               //Matrix Mixdown
+        avpriv_pce_copy_bits(pb, gb, 3);
+    for (bits = five_bit_ch*5+four_bit_ch*4; bits > 16; bits -= 16)
+        avpriv_pce_copy_bits(pb, gb, 16);
+    if (bits)
+        avpriv_pce_copy_bits(pb, gb, bits);
+    avpriv_align_put_bits(pb);
+    align_get_bits(gb);
+    comment_size = avpriv_pce_copy_bits(pb, gb, 8);
+    for (; comment_size > 0; comment_size--)
+        avpriv_pce_copy_bits(pb, gb, 8);
+
+    return put_bits_count(pb) - offset;
+}
 
 #endif /* AVCODEC_MPEG4AUDIO_H */
-- 
2.12.0

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to