]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/utvideoenc.c
lavf: move AVStream.pts_buffer to AVStreamInternal
[ffmpeg] / libavcodec / utvideoenc.c
index db00e1eff5f293301cd22664ab2ab51c3898fddb..5c87eb50ac96986a221f1998c58c8e23657bdfe2 100644 (file)
 #include "utvideo.h"
 #include "huffman.h"
 
+typedef struct HuffEntry {
+    uint16_t sym;
+    uint8_t  len;
+    uint32_t code;
+} HuffEntry;
+
+#if FF_API_PRIVATE_OPT
+static const int ut_pred_order[5] = {
+    PRED_LEFT, PRED_MEDIAN, PRED_MEDIAN, PRED_NONE, PRED_GRADIENT
+};
+#endif
+
+/* Compare huffman tree nodes */
+static int ut_huff_cmp_len(const void *a, const void *b)
+{
+    const HuffEntry *aa = a, *bb = b;
+    return (aa->len - bb->len)*256 + aa->sym - bb->sym;
+}
+
 /* Compare huffentry symbols */
 static int huff_cmp_sym(const void *a, const void *b)
 {
@@ -139,7 +158,7 @@ FF_DISABLE_DEPRECATION_WARNINGS
 
     /* Convert from libavcodec prediction type to Ut Video's */
     if (avctx->prediction_method)
-        c->frame_pred = ff_ut_pred_order[avctx->prediction_method];
+        c->frame_pred = ut_pred_order[avctx->prediction_method];
 FF_ENABLE_DEPRECATION_WARNINGS
 #endif
 
@@ -340,13 +359,13 @@ static void calculate_codes(HuffEntry *he)
     int last, i;
     uint32_t code;
 
-    qsort(he, 256, sizeof(*he), ff_ut_huff_cmp_len);
+    qsort(he, 256, sizeof(*he), ut_huff_cmp_len);
 
     last = 255;
     while (he[last].len == 255 && last)
         last--;
 
-    code = 1;
+    code = 0;
     for (i = last; i >= 0; i--) {
         he[i].code  = code >> (32 - he[i].len);
         code       += 0x80000000u >> (he[i].len - 1);
@@ -677,7 +696,7 @@ AVCodec ff_utvideo_encoder = {
     .init           = utvideo_encode_init,
     .encode2        = utvideo_encode_frame,
     .close          = utvideo_encode_close,
-    .capabilities   = AV_CODEC_CAP_FRAME_THREADS | AV_CODEC_CAP_INTRA_ONLY,
+    .capabilities   = AV_CODEC_CAP_FRAME_THREADS,
     .pix_fmts       = (const enum AVPixelFormat[]) {
                           AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP, AV_PIX_FMT_YUV422P,
                           AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_NONE