Use shared sine window instead of defining another one.
[ffmpeg.git] / vhook / watermark.c
index 4d2acd2..1d4be28 100644 (file)
 #include <unistd.h>
 #include <stdarg.h>
 
-#include "common.h"
-#include "avformat.h"
-
-#include "framehook.h"
-#include "cmdutils.h"
-#include "swscale.h"
+#include "libavutil/common.h"
+#include "libavformat/avformat.h"
+#include "libavformat/framehook.h"
+#include "libswscale/swscale.h"
 
 static int sws_flags = SWS_BICUBIC;
 
@@ -208,23 +206,23 @@ static void Process0(void *ctx,
     int thrG = ci->thrG;
     int thrB = ci->thrB;
 
-    if (pix_fmt != PIX_FMT_RGBA32) {
+    if (pix_fmt != PIX_FMT_RGB32) {
         int size;
 
-        size = avpicture_get_size(PIX_FMT_RGBA32, src_width, src_height);
+        size = avpicture_get_size(PIX_FMT_RGB32, src_width, src_height);
         buf = av_malloc(size);
 
-        avpicture_fill(&picture1, buf, PIX_FMT_RGBA32, src_width, src_height);
+        avpicture_fill(&picture1, buf, PIX_FMT_RGB32, src_width, src_height);
 
         // if we already got a SWS context, let's realloc if is not re-useable
         ci->toRGB_convert_ctx = sws_getCachedContext(ci->toRGB_convert_ctx,
                                     src_width, src_height, pix_fmt,
-                                    src_width, src_height, PIX_FMT_RGBA32,
+                                    src_width, src_height, PIX_FMT_RGB32,
                                     sws_flags, NULL, NULL, NULL);
         if (ci->toRGB_convert_ctx == NULL) {
             av_log(NULL, AV_LOG_ERROR,
                    "Cannot initialize the toRGB conversion context\n");
-            exit(1);
+            return;
         }
 
 // img_convert parameters are          2 first destination, then 4 source
@@ -248,7 +246,7 @@ static void Process0(void *ctx,
     ym_size = ci->y_size;
 
     // I'll do the *4 => <<2 crap later. Most compilers understand that anyway.
-    // According to avcodec.h PIX_FMT_RGBA32 is handled in endian specific manner.
+    // According to avcodec.h PIX_FMT_RGB32 is handled in endian specific manner.
     for (y=0; y<src_height; y++) {
         offs = y * (src_width * 4);
         offsm = (((y * ym_size) / src_height) * 4) * xm_size; // offsm first in maskline. byteoffs!
@@ -291,15 +289,15 @@ static void Process0(void *ctx,
 
 
 
-    if (pix_fmt != PIX_FMT_RGBA32) {
+    if (pix_fmt != PIX_FMT_RGB32) {
         ci->fromRGB_convert_ctx = sws_getCachedContext(ci->fromRGB_convert_ctx,
-                                      src_width, src_height, PIX_FMT_RGBA32,
+                                      src_width, src_height, PIX_FMT_RGB32,
                                       src_width, src_height, pix_fmt,
                                       sws_flags, NULL, NULL, NULL);
         if (ci->fromRGB_convert_ctx == NULL) {
             av_log(NULL, AV_LOG_ERROR,
                    "Cannot initialize the fromRGB conversion context\n");
-            exit(1);
+            return;
         }
 // img_convert parameters are          2 first destination, then 4 source
 // sws_scale   parameters are context, 4 first source,      then 2 destination
@@ -339,23 +337,23 @@ static void Process1(void *ctx,
     uint32_t pixel;
     uint32_t pixelm;
 
-    if (pix_fmt != PIX_FMT_RGBA32) {
+    if (pix_fmt != PIX_FMT_RGB32) {
         int size;
 
-        size = avpicture_get_size(PIX_FMT_RGBA32, src_width, src_height);
+        size = avpicture_get_size(PIX_FMT_RGB32, src_width, src_height);
         buf = av_malloc(size);
 
-        avpicture_fill(&picture1, buf, PIX_FMT_RGBA32, src_width, src_height);
+        avpicture_fill(&picture1, buf, PIX_FMT_RGB32, src_width, src_height);
 
         // if we already got a SWS context, let's realloc if is not re-useable
         ci->toRGB_convert_ctx = sws_getCachedContext(ci->toRGB_convert_ctx,
                                     src_width, src_height, pix_fmt,
-                                    src_width, src_height, PIX_FMT_RGBA32,
+                                    src_width, src_height, PIX_FMT_RGB32,
                                     sws_flags, NULL, NULL, NULL);
         if (ci->toRGB_convert_ctx == NULL) {
             av_log(NULL, AV_LOG_ERROR,
                    "Cannot initialize the toRGB conversion context\n");
-            exit(1);
+            return;
         }
 
 // img_convert parameters are          2 first destination, then 4 source
@@ -379,7 +377,7 @@ static void Process1(void *ctx,
     ym_size = ci->y_size;
 
     // I'll do the *4 => <<2 crap later. Most compilers understand that anyway.
-    // According to avcodec.h PIX_FMT_RGBA32 is handled in endian specific manner.
+    // According to avcodec.h PIX_FMT_RGB32 is handled in endian specific manner.
     for (y=0; y<src_height; y++) {
         offs = y * (src_width * 4);
         offsm = (((y * ym_size) / src_height) * 4) * xm_size; // offsm first in maskline. byteoffs!
@@ -402,15 +400,15 @@ static void Process1(void *ctx,
         } // foreach X
     } // foreach Y
 
-    if (pix_fmt != PIX_FMT_RGBA32) {
+    if (pix_fmt != PIX_FMT_RGB32) {
         ci->fromRGB_convert_ctx = sws_getCachedContext(ci->fromRGB_convert_ctx,
-                                      src_width, src_height, PIX_FMT_RGBA32,
+                                      src_width, src_height, PIX_FMT_RGB32,
                                       src_width, src_height, pix_fmt,
                                       sws_flags, NULL, NULL, NULL);
         if (ci->fromRGB_convert_ctx == NULL) {
             av_log(NULL, AV_LOG_ERROR,
                    "Cannot initialize the fromRGB conversion context\n");
-            exit(1);
+            return;
         }
 // img_convert parameters are          2 first destination, then 4 source
 // sws_scale   parameters are context, 4 first source,      then 2 destination
@@ -435,9 +433,9 @@ void Process(void *ctx,
 {
     ContextInfo *ci = (ContextInfo *) ctx;
     if (1 == ci->mode) {
-        return Process1(ctx, picture, pix_fmt, src_width, src_height, pts);
+        Process1(ctx, picture, pix_fmt, src_width, src_height, pts);
     } else {
-        return Process0(ctx, picture, pix_fmt, src_width, src_height, pts);
+        Process0(ctx, picture, pix_fmt, src_width, src_height, pts);
     }
 }
 
@@ -544,10 +542,6 @@ int get_watermark_picture(ContextInfo *ci, int cleanup)
             return -1;
         }
 
-        // Inform the codec that we can handle truncated bitstreams -- i.e.,
-        // bitstreams where frame boundaries can fall in the middle of packets
-        if (ci->pCodec->capabilities & CODEC_CAP_TRUNCATED)
-            ci->pCodecCtx->flags|=CODEC_FLAG_TRUNCATED;
 
         // Open codec
         if(avcodec_open(ci->pCodecCtx, ci->pCodec)<0) {
@@ -577,12 +571,12 @@ int get_watermark_picture(ContextInfo *ci, int cleanup)
         }
 
         // Determine required buffer size and allocate buffer
-        ci->numBytes = avpicture_get_size(PIX_FMT_RGBA32, ci->pCodecCtx->width,
+        ci->numBytes = avpicture_get_size(PIX_FMT_RGB32, ci->pCodecCtx->width,
             ci->pCodecCtx->height);
         ci->buffer = av_malloc(ci->numBytes);
 
         // Assign appropriate parts of buffer to image planes in pFrameRGB
-        avpicture_fill((AVPicture *)ci->pFrameRGB, ci->buffer, PIX_FMT_RGBA32,
+        avpicture_fill((AVPicture *)ci->pFrameRGB, ci->buffer, PIX_FMT_RGB32,
             ci->pCodecCtx->width, ci->pCodecCtx->height);
     }
     // TODO loop, pingpong etc?
@@ -601,16 +595,16 @@ int get_watermark_picture(ContextInfo *ci, int cleanup)
                 // Did we get a video frame?
                 if(ci->frameFinished)
                 {
-                    // Convert the image from its native format to RGBA32
+                    // Convert the image from its native format to RGB32
                     ci->watermark_convert_ctx =
                         sws_getCachedContext(ci->watermark_convert_ctx,
                             ci->pCodecCtx->width, ci->pCodecCtx->height, ci->pCodecCtx->pix_fmt,
-                            ci->pCodecCtx->width, ci->pCodecCtx->height, PIX_FMT_RGBA32,
+                            ci->pCodecCtx->width, ci->pCodecCtx->height, PIX_FMT_RGB32,
                             sws_flags, NULL, NULL, NULL);
                     if (ci->watermark_convert_ctx == NULL) {
                         av_log(NULL, AV_LOG_ERROR,
                               "Cannot initialize the watermark conversion context\n");
-                        exit(1);
+                        return -1;
                     }
 // img_convert parameters are          2 first destination, then 4 source
 // sws_scale   parameters are context, 4 first source,      then 2 destination