]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/v4l2_m2m_enc.c
Merge commit 'a46a4f722d2fac07c57990f0f548777622599f59'
[ffmpeg] / libavcodec / v4l2_m2m_enc.c
index e40a120b533fd304418e32bb0b3ea246d307db3c..f71ce5fb74af12a0a0ba2499ae0bd191a462b658 100644 (file)
@@ -91,20 +91,12 @@ static inline int v4l2_get_ext_ctrl(V4L2m2mContext *s, unsigned int id, signed i
     return 0;
 }
 
-static int match_profile(const void *a, const void *b)
-{
-    if (*(unsigned int *)a == *(unsigned int *)b)
-        return 0;
-
-    return 1;
-}
-
 static inline unsigned int v4l2_h264_profile_from_ff(int p)
 {
-    struct h264_profile  {
+    static const struct h264_profile  {
         unsigned int ffmpeg_val;
         unsigned int v4l2_val;
-    } *val, profile[] = {
+    } profile[] = {
         { FF_PROFILE_H264_CONSTRAINED_BASELINE, MPEG_VIDEO(H264_PROFILE_CONSTRAINED_BASELINE) },
         { FF_PROFILE_H264_HIGH_444_PREDICTIVE, MPEG_VIDEO(H264_PROFILE_HIGH_444_PREDICTIVE) },
         { FF_PROFILE_H264_HIGH_422_INTRA, MPEG_VIDEO(H264_PROFILE_HIGH_422_INTRA) },
@@ -117,33 +109,33 @@ static inline unsigned int v4l2_h264_profile_from_ff(int p)
         { FF_PROFILE_H264_MAIN, MPEG_VIDEO(H264_PROFILE_MAIN) },
         { FF_PROFILE_H264_HIGH, MPEG_VIDEO(H264_PROFILE_HIGH) },
     };
-    size_t len = FF_ARRAY_ELEMS(profile);
-
-    val = lfind(&p, profile, &len, sizeof(profile[0]), match_profile);
-    if (val)
-        return val->v4l2_val;
+    int i;
 
+    for (i = 0; i < FF_ARRAY_ELEMS(profile); i++) {
+        if (profile[i].ffmpeg_val == p)
+            return profile[i].v4l2_val;
+    }
     return AVERROR(ENOENT);
 }
 
 static inline int v4l2_mpeg4_profile_from_ff(int p)
 {
-    struct mpeg4_profile {
+    static const struct mpeg4_profile {
         unsigned int ffmpeg_val;
         unsigned int v4l2_val;
-    } *val, profile[] = {
+    } profile[] = {
         { FF_PROFILE_MPEG4_ADVANCED_CODING, MPEG_VIDEO(MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY) },
         { FF_PROFILE_MPEG4_ADVANCED_SIMPLE, MPEG_VIDEO(MPEG4_PROFILE_ADVANCED_SIMPLE) },
         { FF_PROFILE_MPEG4_SIMPLE_SCALABLE, MPEG_VIDEO(MPEG4_PROFILE_SIMPLE_SCALABLE) },
         { FF_PROFILE_MPEG4_SIMPLE, MPEG_VIDEO(MPEG4_PROFILE_SIMPLE) },
         { FF_PROFILE_MPEG4_CORE, MPEG_VIDEO(MPEG4_PROFILE_CORE) },
     };
-    size_t len = FF_ARRAY_ELEMS(profile);
-
-    val = lfind(&p, profile, &len, sizeof(profile[0]), match_profile);
-    if (val)
-        return val->v4l2_val;
+    int i;
 
+    for (i = 0; i < FF_ARRAY_ELEMS(profile); i++) {
+        if (profile[i].ffmpeg_val == p)
+            return profile[i].v4l2_val;
+    }
     return AVERROR(ENOENT);
 }
 
@@ -188,7 +180,7 @@ static int v4l2_prepare_encoder(V4L2m2mContext *s)
 
     av_log(avctx, AV_LOG_DEBUG,
         "Encoder Context: id (%d), profile (%d), frame rate(%d/%d), number b-frames (%d), "
-        "gop size (%d), bit rate (%ld), qmin (%d), qmax (%d)\n",
+        "gop size (%d), bit rate (%"PRId64"), qmin (%d), qmax (%d)\n",
         avctx->codec_id, avctx->profile, avctx->framerate.num, avctx->framerate.den,
         avctx->max_b_frames, avctx->gop_size, avctx->bit_rate, avctx->qmin, avctx->qmax);