Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
/*
2
 * Copyright (c) 2013 Georg Martius 
3
 *
4
 * This file is part of FFmpeg.
5
 *
6
 * FFmpeg is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU Lesser General Public
8
 * License as published by the Free Software Foundation; either
9
 * version 2.1 of the License, or (at your option) any later version.
10
 *
11
 * FFmpeg is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
 * Lesser General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Lesser General Public
17
 * License along with FFmpeg; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
 */
20
 
21
#include "vidstabutils.h"
22
 
23
/** convert AV's pixelformat to vid.stab pixelformat */
24
VSPixelFormat av_2_vs_pixel_format(AVFilterContext *ctx, enum AVPixelFormat pf)
25
{
26
    switch (pf) {
27
    case AV_PIX_FMT_YUV420P:  return PF_YUV420P;
28
    case AV_PIX_FMT_YUV422P:  return PF_YUV422P;
29
    case AV_PIX_FMT_YUV444P:  return PF_YUV444P;
30
    case AV_PIX_FMT_YUV410P:  return PF_YUV410P;
31
    case AV_PIX_FMT_YUV411P:  return PF_YUV411P;
32
    case AV_PIX_FMT_YUV440P:  return PF_YUV440P;
33
    case AV_PIX_FMT_YUVA420P: return PF_YUVA420P;
34
    case AV_PIX_FMT_GRAY8:    return PF_GRAY8;
35
    case AV_PIX_FMT_RGB24:    return PF_RGB24;
36
    case AV_PIX_FMT_BGR24:    return PF_BGR24;
37
    case AV_PIX_FMT_RGBA:     return PF_RGBA;
38
    default:
39
        av_log(ctx, AV_LOG_ERROR, "cannot deal with pixel format %i\n", pf);
40
        return PF_NONE;
41
    }
42
}
43
 
44
/** struct to hold a valid context for logging from within vid.stab lib */
45
typedef struct {
46
    const AVClass *class;
47
} VS2AVLogCtx;
48
 
49
/** wrapper to log vs_log into av_log */
50
static int vs_2_av_log_wrapper(int type, const char *tag, const char *format, ...)
51
{
52
    va_list ap;
53
    VS2AVLogCtx ctx;
54
    AVClass class = {
55
      .class_name = tag,
56
      .item_name  = av_default_item_name,
57
      .option     = 0,
58
      .version    = LIBAVUTIL_VERSION_INT,
59
      .category   = AV_CLASS_CATEGORY_FILTER,
60
    };
61
    ctx.class = &class;
62
    va_start(ap, format);
63
    av_vlog(&ctx, type, format, ap);
64
    va_end(ap);
65
    return VS_OK;
66
}
67
 
68
/** sets the memory allocation function and logging constants to av versions */
69
void vs_set_mem_and_log_functions(void)
70
{
71
    vs_malloc  = av_malloc;
72
    vs_zalloc  = av_mallocz;
73
    vs_realloc = av_realloc;
74
    vs_free    = av_free;
75
 
76
    VS_ERROR_TYPE = AV_LOG_ERROR;
77
    VS_WARN_TYPE  = AV_LOG_WARNING;
78
    VS_INFO_TYPE  = AV_LOG_INFO;
79
    VS_MSG_TYPE   = AV_LOG_VERBOSE;
80
 
81
    vs_log   = vs_2_av_log_wrapper;
82
 
83
    VS_ERROR = 0;
84
    VS_OK    = 1;
85
}