virtual int encode_activate();
virtual int decode_activate();
int read_packet();
+ int write_packet(FFPacket &pkt);
+ int flush();
int decode(AVFrame *frame);
virtual int decode_frame(AVFrame *frame, int &got_frame) = 0;
+ virtual int encode_frame(FFPacket &pkt, AVFrame *frame, int &got_frame) = 0;
virtual int init_frame(AVFrame *frame) = 0;
virtual int create_filter(const char *filter_spec,
AVCodecContext *src_ctx, AVCodecContext *sink_ctx) = 0;
int reading, writing;
int eof;
- int st_eof() {
- return eof;
- }
- void st_eof(int v) {
- if( !v ) { flushed = 0; need_packet = 1; }
- eof = v;
- }
+ int st_eof() { return eof; }
+ void st_eof(int v) { eof = v; }
};
class FFAudioStream : public FFStream {
virtual ~FFAudioStream();
int load_history(uint8_t **data, int len);
int decode_frame(AVFrame *frame, int &got_frame);
+ int encode_frame(FFPacket &pkt, AVFrame *frame, int &got_frame);
int create_filter(const char *filter_spec,
AVCodecContext *src_ctx, AVCodecContext *sink_ctx);
FFVideoStream(FFMPEG *ffmpeg, AVStream *strm, int idx);
virtual ~FFVideoStream();
int decode_frame(AVFrame *frame, int &got_frame);
+ int encode_frame(FFPacket &pkt, AVFrame *frame, int &got_frame);
int create_filter(const char *filter_spec,
AVCodecContext *src_ctx, AVCodecContext *sink_ctx);
int check_sample_rate(AVCodec *codec, int sample_rate);
AVRational check_frame_rate(AVCodec *codec, double frame_rate);
- AVRational to_sample_aspect_ratio(double aspect_ratio);
+ AVRational to_sample_aspect_ratio(Asset *asset);
AVRational to_time_base(int sample_rate);
static void set_option_path(char *path, const char *fmt, ...);
int get_encoder(FILE *fp,
char *format, char *codec, char *bsfilter, char *bsargs);
int read_options(const char *options, AVDictionary *&opts);
- int scan_options(const char *options, AVDictionary *&opts);
+ int scan_options(const char *options, AVDictionary *&opts, AVStream *st);
int read_options(FILE *fp, const char *options, AVDictionary *&opts);
int load_options(const char *options, AVDictionary *&opts);
static int load_options(const char *path, char *bfr, int len);