mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
ext/ffmpeg/: respect pixel-aspect-ratio when encoding.
Original commit message from CVS: * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_caps_to_pixfmt): * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_getcaps): respect pixel-aspect-ratio when encoding.
This commit is contained in:
parent
76083c9e99
commit
231adecd88
3 changed files with 28 additions and 5 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2006-02-12 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
|
* ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_caps_to_pixfmt):
|
||||||
|
* ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_getcaps):
|
||||||
|
respect pixel-aspect-ratio when encoding.
|
||||||
|
|
||||||
2006-02-12 Edward Hervey <edward@fluendo.com>
|
2006-02-12 Edward Hervey <edward@fluendo.com>
|
||||||
|
|
||||||
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_init),
|
* ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_init),
|
||||||
|
|
|
@ -1141,7 +1141,9 @@ gst_ffmpeg_caps_to_pixfmt (const GstCaps * caps,
|
||||||
{
|
{
|
||||||
GstStructure *structure;
|
GstStructure *structure;
|
||||||
const GValue *fps;
|
const GValue *fps;
|
||||||
|
const GValue *par;
|
||||||
|
|
||||||
|
GST_DEBUG ("converting caps %" GST_PTR_FORMAT, caps);
|
||||||
g_return_if_fail (gst_caps_get_size (caps) == 1);
|
g_return_if_fail (gst_caps_get_size (caps) == 1);
|
||||||
structure = gst_caps_get_structure (caps, 0);
|
structure = gst_caps_get_structure (caps, 0);
|
||||||
|
|
||||||
|
@ -1157,14 +1159,26 @@ gst_ffmpeg_caps_to_pixfmt (const GstCaps * caps,
|
||||||
context->time_base.num = gst_value_get_fraction_denominator (fps);
|
context->time_base.num = gst_value_get_fraction_denominator (fps);
|
||||||
|
|
||||||
GST_DEBUG ("setting framerate %d/%d = %lf",
|
GST_DEBUG ("setting framerate %d/%d = %lf",
|
||||||
context->time_base.den, context->time_base.num,
|
context->time_base.den, context->time_base.num,
|
||||||
1. * context->time_base.den / context->time_base.num);
|
1. * context->time_base.den / context->time_base.num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
par = gst_structure_get_value (structure, "pixel-aspect-ratio");
|
||||||
|
if (par != NULL && GST_VALUE_HOLDS_FRACTION (par)) {
|
||||||
|
|
||||||
|
context->sample_aspect_ratio.num = gst_value_get_fraction_numerator (par);
|
||||||
|
context->sample_aspect_ratio.den = gst_value_get_fraction_denominator (par);
|
||||||
|
|
||||||
|
GST_DEBUG ("setting pixel-aspect-ratio %d/%d = %lf",
|
||||||
|
context->sample_aspect_ratio.den, context->sample_aspect_ratio.num,
|
||||||
|
1. * context->sample_aspect_ratio.den / context->sample_aspect_ratio.num);
|
||||||
|
}
|
||||||
|
|
||||||
if (!raw)
|
if (!raw)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
g_return_if_fail (fps != NULL && GST_VALUE_HOLDS_FRACTION (fps));
|
g_return_if_fail (fps != NULL && GST_VALUE_HOLDS_FRACTION (fps));
|
||||||
|
g_return_if_fail (par != NULL && GST_VALUE_HOLDS_FRACTION (par));
|
||||||
|
|
||||||
if (strcmp (gst_structure_get_name (structure), "video/x-raw-yuv") == 0) {
|
if (strcmp (gst_structure_get_name (structure), "video/x-raw-yuv") == 0) {
|
||||||
guint32 fourcc;
|
guint32 fourcc;
|
||||||
|
|
|
@ -39,6 +39,9 @@
|
||||||
#define DEFAULT_VIDEO_GOP_SIZE 15
|
#define DEFAULT_VIDEO_GOP_SIZE 15
|
||||||
#define DEFAULT_AUDIO_BITRATE 128000
|
#define DEFAULT_AUDIO_BITRATE 128000
|
||||||
|
|
||||||
|
#define DEFAULT_WIDTH 352
|
||||||
|
#define DEFAULT_HEIGHT 288
|
||||||
|
|
||||||
typedef struct _GstFFMpegEnc GstFFMpegEnc;
|
typedef struct _GstFFMpegEnc GstFFMpegEnc;
|
||||||
|
|
||||||
struct _GstFFMpegEnc
|
struct _GstFFMpegEnc
|
||||||
|
@ -325,11 +328,11 @@ gst_ffmpegenc_getcaps (GstPad * pad)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set some default properties */
|
/* set some default properties */
|
||||||
ctx->width = 352;
|
ctx->width = DEFAULT_WIDTH;
|
||||||
ctx->height = 288;
|
ctx->height = DEFAULT_HEIGHT;
|
||||||
ctx->time_base.num = DEFAULT_FRAME_RATE_BASE;
|
ctx->time_base.num = DEFAULT_FRAME_RATE_BASE;
|
||||||
ctx->time_base.den = 25 * DEFAULT_FRAME_RATE_BASE;
|
ctx->time_base.den = 25 * DEFAULT_FRAME_RATE_BASE;
|
||||||
ctx->bit_rate = 350 * 1000;
|
ctx->bit_rate = DEFAULT_VIDEO_BITRATE;
|
||||||
/* makes it silent */
|
/* makes it silent */
|
||||||
ctx->strict_std_compliance = -1;
|
ctx->strict_std_compliance = -1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue