#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdarg.h>
#include <string.h>
#include "common.h"
#include "avformat.h"
#include "avcodec.h"
#include "allformats.h"
#include "framehook.h"
#include "cmdutils.h"
Data Structures | |
struct | RGBA |
struct | RECT |
struct | ContextInfo |
Defines | |
#define | MAX_FILEPATH 2048 |
Max filepath length. | |
#define | min(a, b) ((a < b) ? a : b) |
Return the smaller of 2 values. | |
#define | max(a, b) ((a > b) ? a : b) |
Return the larger of 2 values. | |
Functions | |
int | Configure (void **ctxp, int argc, char *argv[]) |
void | Release (void *ctx) |
void | Process (void *ctx, AVPicture *picture, enum PixelFormat pix_fmt, int src_width, int src_height, int64_t pts) |
int | load_image (ContextInfo *ci) |
void | release_image (ContextInfo *ci) |
void | calc_bounds (ContextInfo *ci, int vid_width, int vid_height) |
int | alpha_merge (int back, int fore, double alpha) |
Sponsored by Fabrik Inc. - bfree(at)fabrikinc.com
Note: PNG support requires that FFMPEG be built with the PNG codec registered/enabled.
EXAMPLE USAGE:
ffmpeg -i INFILE -vhook 'PATH/logo.so -f logo.gif' OUTFILE
Note: the entire vhook argument must be single-quoted.
REQUIRED ARGS:
-f <FILEPATH>
Specifies the image to use for the logo. GIF is supported in normal FFMPEG builds; PNG is supported if enabled in libavcodec and libavformat.
OPTIONAL ARGS:
-x <INT>
Defines a logo offset from the left side of the frame. A negative value (including -0) offsets from the right side.
-y <INT>
Defines a logo offset from the top of the frame. A negative value (including -0) offsets from the bottom.
-w <INT>
Defines a drop shadow to the right of the logo. A negative value shifts the shadow to the left.
-h <INT>
Defines a drop shadow to the bottom of the logo. A negative value shifts the shadow upward.
-d <INT>
Defines the percent opacity of the drop shadow (0 - 100); 100 is opaque. Defaults to 75.
Sample logos and additional notes available at http://graphcomp.com/ffmpeg#plugins
LICENSE:
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
int alpha_merge | ( | int | back, | |
int | fore, | |||
double | alpha | |||
) |
Merges a pixel component onto another using and alpha-channel value.
back | Background pixel value. | |
fore | Foreground pixel value. | |
alpha | Alpha-channel value - from 0.0 (transparent) to 1.0 (opaque). |
void calc_bounds | ( | ContextInfo * | ci, | |
int | vid_width, | |||
int | vid_height | |||
) |
Calculates bounding info for video frame, logo and drop-shadow.
ci | Context pointer. | |
vid_width | Video frame width in pixels. | |
vid_height | Video frame height in pixels. |
int Configure | ( | void ** | ctxp, | |
int | argc, | |||
char * | argv[] | |||
) |
Allocate context block and capture user parameters. Called by FFMPEG pipeline.
ctxp | A handle to receive alloacted context pointer. | |
argc | vhook's argument count. | |
argv | vhook's argument pointers. |
int load_image | ( | ContextInfo * | ci | ) |
Load and cache an image.
ci | Context pointer. |
void Process | ( | void * | ctx, | |
AVPicture * | picture, | |||
enum PixelFormat | pix_fmt, | |||
int | src_width, | |||
int | src_height, | |||
int64_t | pts | |||
) |
Main video frame proc. Called by FFMPEG pipeline.
ctx | Context pointer. | |
picture | Pointer to video frame. | |
pix_fmt | Video frame format constant. | |
src_width | Video frame width in pixels. | |
src_heigth | Video frame height in pixels. | |
pts | Presentation timestamp. |
void Release | ( | void * | ctx | ) |
Release context block. Called by FFMPEG pipeline.
ctx | Context pointer. |
void release_image | ( | ContextInfo * | ci | ) |
Release an image cache.
ci | Context pointer. |