source: git/src/moviemaker.h

walls-data-hanging-as-warning
Last change on this file was 40d1db36, checked in by Olly Betts <olly@…>, 2 months ago

Eliminate references to libav

The libav project seems to be defunct so we can now just refer to
FFmpeg, which it was a fork of and which we've always supported as
well.

  • Property mode set to 100644
File size: 2.0 KB
RevLine 
[6a4cdcb6]1//
2//  moviemaker.h
3//
4//  Class for writing movies from Aven.
5//
[47b2b81]6//  Copyright (C) 2004,2010,2011,2013,2014,2016,2023 Olly Betts
[6a4cdcb6]7//
8//  This program is free software; you can redistribute it and/or modify
9//  it under the terms of the GNU General Public License as published by
10//  the Free Software Foundation; either version 2 of the License, or
11//  (at your option) any later version.
12//
13//  This program is distributed in the hope that it will be useful,
14//  but WITHOUT ANY WARRANTY; without even the implied warranty of
15//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16//  GNU General Public License for more details.
17//
18//  You should have received a copy of the GNU General Public License
19//  along with this program; if not, write to the Free Software
[ecbc6c18]20//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
[6a4cdcb6]21//
22
[6c36b54]23#ifndef moviemaker_h
24#define moviemaker_h
25
[ee3d89c]26#ifndef PACKAGE
27# error config.h must be included first in each C++ source file
28#endif
29
[f4e4b56]30#include <stdio.h>
31
[0aaa578]32struct AVCodecContext;
[1805274]33struct AVFormatContext;
34struct AVStream;
[6a4cdcb6]35struct AVFrame;
36struct AVPicture;
[9e516d0d]37struct SwsContext;
[6a4cdcb6]38
[40d1db36]39#ifdef WITH_FFMPEG
[47b2b81]40extern "C" {
41// To get LIBAVCODEC_VERSION_MAJOR defined:
42# include <libavcodec/avcodec.h>
43}
44#endif
45
[6a4cdcb6]46class MovieMaker {
[40d1db36]47#ifdef WITH_FFMPEG
[1805274]48    AVFormatContext *oc;
[64d06c0]49    AVStream *video_st;
[47b2b81]50# if LIBAVCODEC_VERSION_MAJOR < 57
51#  ifndef HAVE_AVCODEC_ENCODE_VIDEO2
[0aaa578]52    int out_size; // Legacy-only.
[47b2b81]53#  endif
[bc6faa9]54# endif
[0aaa578]55    AVCodecContext *context;
[6a4cdcb6]56    AVFrame *frame;
[5fa6f1f0]57# if LIBAVCODEC_VERSION_MAJOR < 57
[47b2b81]58#  ifndef HAVE_AVCODEC_ENCODE_VIDEO2
[0aaa578]59    unsigned char *outbuf; // Legacy-only.
[47b2b81]60#  endif
[bc6faa9]61# endif
[6a4cdcb6]62    unsigned char *pixels;
[9e516d0d]63    SwsContext *sws_ctx;
[091069f]64    int averrno;
[f4e4b56]65    FILE* fh_to_close;
[b49ac56]66
[0aaa578]67    int encode_frame(AVFrame* frame);
[98fd937]68    void release();
[c648bd1]69#endif
[98fd937]70
[6a4cdcb6]71public:
[1805274]72    MovieMaker();
[f4e4b56]73    bool Open(FILE* fh, const char* ext, int width, int height);
[6a4cdcb6]74    unsigned char * GetBuffer() const;
75    int GetWidth() const;
76    int GetHeight() const;
[98fd937]77    bool AddFrame();
78    bool Close();
[6a4cdcb6]79    ~MovieMaker();
[091069f]80    const char * get_error_string() const;
[6a4cdcb6]81};
[6c36b54]82
83#endif
Note: See TracBrowser for help on using the repository browser.