本文用libswscale转换原始视频格式。程序输入一个原始视频文件:yuv文件,yuv420p格式,宽高848x480。输出:rgb文件,rgb24格式,宽高1696x960。
#include <libavutil/imgutils.h>
#include <libavutil/parseutils.h>
#include <libswscale/swscale.h>
static void scale_video()
{
uint8_t *src_data[4], *dst_data[4];
int src_linesize[4], dst_linesize[4];
int src_w = 848, src_h = 480, dst_w = 848*2, dst_h = 480*2;
enum AVPixelFormat src_pix_fmt = AV_PIX_FMT_YUV420P, dst_pix_fmt = AV_PIX_FMT_RGB24;
const char *src_filename = "/Users/zhw/Desktop/resource/sintel_yuv420p_848x480.yuv";
const char *dst_filename = "/Users/zhw/Desktop/result.rgb";
FILE *dst_file, *src_file;
int dst_bufsize;
struct SwsContext *sws_ctx;
int ret;
uint8_t yuv[src_w * src_h * 3 / 2];
src_file = fopen(src_filename, "rb");
if (!src_file) {
fprintf(stderr, "Could not op