#define _XOPEN_SOURCE 600
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
{
int ret;
return ret;
}
return ret;
}
if (ret < 0) {
return ret;
}
return ret;
}
return 0;
}
{
char args[512];
int ret = 0;
goto end;
}
snprintf(args, sizeof(args),
"video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",
if (ret < 0) {
goto end;
}
goto end;
}
if (ret < 0) {
goto end;
}
if (ret < 0) {
goto end;
}
&inputs, &outputs, NULL)) < 0)
goto end;
goto end;
end:
return ret;
}
{
int x, y;
uint8_t *p0, *p;
int64_t delay;
if (delay > 0 && delay < 1000000)
usleep(delay);
}
}
puts("\033c");
for (y = 0; y <
frame->height; y++) {
p = p0;
for (x = 0; x <
frame->width; x++)
putchar(" .-+#"[*(p++) / 52]);
putchar('\n');
p0 +=
frame->linesize[0];
}
fflush(stdout);
}
int main(
int argc,
char **argv)
{
int ret;
if (argc != 2) {
fprintf(stderr, "Usage: %s file\n", argv[0]);
exit(1);
}
if (!
frame || !filt_frame || !packet) {
fprintf(stderr, "Could not allocate frame or packet\n");
exit(1);
}
goto end;
goto end;
while (1) {
break;
if (ret < 0) {
break;
}
while (ret >= 0) {
break;
} else if (ret < 0) {
goto end;
}
break;
}
while (1) {
break;
if (ret < 0)
goto end;
}
}
}
}
goto end;
}
while (1) {
break;
if (ret < 0)
goto end;
}
}
end:
fprintf(stderr,
"Error occurred: %s\n",
av_err2str(ret));
exit(1);
}
exit(0);
}
Libavcodec external API header.
int main(int argc, char *argv[])
memory buffer sink API for audio and video
Memory buffer source API.
AVFilterGraph * filter_graph
static AVFormatContext * fmt_ctx
AVFilterContext * buffersink_ctx
static const char * filter_descr
AVFilterContext * buffersrc_ctx
static int open_input_file(const char *filename)
static AVCodecContext * dec_ctx
static void display_frame(const AVFrame *frame, AVRational time_base)
static int video_stream_index
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
Initialize the AVCodecContext to use the given AVCodec.
AVCodecContext * avcodec_alloc_context3(const AVCodec *codec)
Allocate an AVCodecContext and set its fields to default values.
int avcodec_parameters_to_context(AVCodecContext *codec, const struct AVCodecParameters *par)
Fill the codec context based on the values from the supplied codec parameters.
void avcodec_free_context(AVCodecContext **avctx)
Free the codec context and everything associated with it and write NULL to the provided pointer.
int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame)
Return decoded output data from a decoder or encoder (when the AV_CODEC_FLAG_RECON_FRAME flag is used...
int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt)
Supply raw packet data as input to a decoder.
void av_packet_free(AVPacket **pkt)
Free the packet, if the packet is reference counted, it will be unreferenced first.
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
AVPacket * av_packet_alloc(void)
Allocate an AVPacket and set its fields to default values.
int av_read_frame(AVFormatContext *s, AVPacket *pkt)
Return the next frame of a stream.
int av_find_best_stream(AVFormatContext *ic, enum AVMediaType type, int wanted_stream_nb, int related_stream, const struct AVCodec **decoder_ret, int flags)
Find the "best" stream in the file.
int avformat_open_input(AVFormatContext **ps, const char *url, const AVInputFormat *fmt, AVDictionary **options)
Open an input stream and read the header.
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
Read packets of a media file to get stream information.
void avformat_close_input(AVFormatContext **s)
Close an opened input AVFormatContext.
int av_buffersink_get_frame(AVFilterContext *ctx, AVFrame *frame)
Get a frame with filtered data from sink and put it in frame.
av_warn_unused_result int av_buffersrc_add_frame_flags(AVFilterContext *buffer_src, AVFrame *frame, int flags)
Add a frame to the buffer source.
@ AV_BUFFERSRC_FLAG_KEEP_REF
Keep a reference to the frame.
int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx)
Check validity and configure all the links and formats in the graph.
const AVFilter * avfilter_get_by_name(const char *name)
Get a filter definition matching the given name.
void avfilter_inout_free(AVFilterInOut **inout)
Free the supplied list of AVFilterInOut and set *inout to NULL.
int avfilter_graph_parse_ptr(AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs, void *log_ctx)
Add a graph described by a string to a graph.
AVFilterContext * avfilter_graph_alloc_filter(AVFilterGraph *graph, const AVFilter *filter, const char *name)
Create a new filter instance in a filter graph.
void avfilter_graph_free(AVFilterGraph **graph)
Free a graph, destroy its links, and set *graph to NULL.
int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options)
Initialize a filter with the supplied dictionary of options.
int avfilter_graph_create_filter(AVFilterContext **filt_ctx, const AVFilter *filt, const char *name, const char *args, void *opaque, AVFilterGraph *graph_ctx)
A convenience wrapper that allocates and initializes a filter in a single step.
AVFilterInOut * avfilter_inout_alloc(void)
Allocate a single AVFilterInOut entry.
AVFilterGraph * avfilter_graph_alloc(void)
Allocate a filter graph.
#define AVERROR_EOF
End of file.
#define av_err2str(errnum)
Convenience macro, the return value should be used only directly in function arguments but never stan...
void av_frame_unref(AVFrame *frame)
Unreference all the buffers referenced by frame and reset the frame fields.
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
AVFrame * av_frame_alloc(void)
Allocate an AVFrame and set its fields to default values.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
void av_log(void *avcl, int level, const char *fmt,...) av_printf_format(3
Send the specified message to the log if the level is less than or equal to the current av_log_level.
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const
Rescale a 64-bit integer by 2 rational numbers.
char * av_strdup(const char *s) av_malloc_attrib
Duplicate a string.
#define AV_NOPTS_VALUE
Undefined timestamp value.
#define AV_TIME_BASE_Q
Internal time base represented as fractional value.
#define AV_OPT_SEARCH_CHILDREN
Search in possible children of the given object first.
int av_opt_set(void *obj, const char *name, const char *val, int search_flags)
Memory handling functions.
main external API structure.
A linked-list of the inputs/outputs of the filter chain.
AVFilterContext * filter_ctx
filter context associated to this input/output
int pad_idx
index of the filt_ctx pad to use for linking
char * name
unique name for this input/output in the list
struct AVFilterInOut * next
next input/input in the list, NULL if this is the last
This structure describes decoded (raw) audio or video data.
This structure stores compressed data.
Rational number (pair of numerator and denominator).
static int init_filters(void)