]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/flashsvenc.c
Export H264 profile and level in AVCodecContext.
[ffmpeg] / libavcodec / flashsvenc.c
index f847e409bd512f4d05f0ce6318b7d0e115dbcd8e..4d2b47979f220307c90c5be954bee30c52c38e48 100644 (file)
@@ -23,7 +23,7 @@
 /* Encoding development sponsored by http://fh-campuswien.ac.at */
 
 /**
- * @file flashsvenc.c
+ * @file libavcodec/flashsvenc.c
  * Flash Screen Video encoder
  * @author Alex Beregszaszi
  * @author Benjamin Larsson
@@ -59,7 +59,7 @@
 #include <zlib.h>
 
 #include "avcodec.h"
-#include "bitstream.h"
+#include "put_bits.h"
 #include "bytestream.h"
 
 
@@ -97,7 +97,7 @@ static int copy_region_enc(uint8_t *sptr, uint8_t *dptr,
     return 0;
 }
 
-static int flashsv_encode_init(AVCodecContext *avctx)
+static av_cold int flashsv_encode_init(AVCodecContext *avctx)
 {
     FlashSVContext *s = avctx->priv_data;
 
@@ -108,10 +108,6 @@ static int flashsv_encode_init(AVCodecContext *avctx)
         return -1;
     }
 
-    if (avcodec_check_dimensions(avctx, avctx->width, avctx->height) < 0) {
-        return -1;
-    }
-
     // Needed if zlib unused or init aborted before deflateInit
     memset(&(s->zstream), 0, sizeof(z_stream));
 
@@ -218,7 +214,7 @@ static int flashsv_encode_frame(AVCodecContext *avctx, uint8_t *buf, int buf_siz
 
     /* First frame needs to be a keyframe */
     if (avctx->frame_number == 0) {
-        s->previous_frame = av_mallocz(abs(p->linesize[0])*s->image_height);
+        s->previous_frame = av_mallocz(FFABS(p->linesize[0])*s->image_height);
         if (!s->previous_frame) {
             av_log(avctx, AV_LOG_ERROR, "Memory allocation failed.\n");
             return -1;
@@ -253,7 +249,7 @@ static int flashsv_encode_frame(AVCodecContext *avctx, uint8_t *buf, int buf_siz
     if(p->linesize[0] > 0)
         memcpy(s->previous_frame, p->data[0], s->image_height*p->linesize[0]);
     else
-        memcpy(s->previous_frame, p->data[0] + p->linesize[0] * (s->image_height-1), s->image_height*abs(p->linesize[0]));
+        memcpy(s->previous_frame, p->data[0] + p->linesize[0] * (s->image_height-1), s->image_height*FFABS(p->linesize[0]));
 
     //mark the frame type so the muxer can mux it correctly
     if (I_frame) {
@@ -271,7 +267,7 @@ static int flashsv_encode_frame(AVCodecContext *avctx, uint8_t *buf, int buf_siz
     return res;
 }
 
-static int flashsv_encode_end(AVCodecContext *avctx)
+static av_cold int flashsv_encode_end(AVCodecContext *avctx)
 {
     FlashSVContext *s = avctx->priv_data;
 
@@ -292,6 +288,7 @@ AVCodec flashsv_encoder = {
     flashsv_encode_init,
     flashsv_encode_frame,
     flashsv_encode_end,
-    .pix_fmts = (enum PixelFormat[]){PIX_FMT_BGR24, -1},
+    .pix_fmts = (const enum PixelFormat[]){PIX_FMT_BGR24, PIX_FMT_NONE},
+    .long_name = NULL_IF_CONFIG_SMALL("Flash Screen Video"),
 };