mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
isomp4: fix wrong DAR calculation for PAR <= 1
CID #1226452 https://bugzilla.gnome.org/show_bug.cgi?id=736396
This commit is contained in:
parent
ba4b9b22d0
commit
e655d47dfc
1 changed files with 6 additions and 7 deletions
|
@ -48,6 +48,7 @@
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
#include <gst/base/gstbytewriter.h>
|
#include <gst/base/gstbytewriter.h>
|
||||||
#include <gst/tag/tag.h>
|
#include <gst/tag/tag.h>
|
||||||
|
#include <gst/video/video.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new AtomsContext for the given flavor.
|
* Creates a new AtomsContext for the given flavor.
|
||||||
|
@ -3483,7 +3484,7 @@ atom_trak_set_video_type (AtomTRAK * trak, AtomsContext * context,
|
||||||
VisualSampleEntry * entry, guint32 scale, GList * ext_atoms_list)
|
VisualSampleEntry * entry, guint32 scale, GList * ext_atoms_list)
|
||||||
{
|
{
|
||||||
SampleTableEntryMP4V *ste;
|
SampleTableEntryMP4V *ste;
|
||||||
gint dwidth, dheight;
|
guint dwidth, dheight;
|
||||||
gint par_n = 0, par_d = 0;
|
gint par_n = 0, par_d = 0;
|
||||||
|
|
||||||
if ((entry->par_n != 1 || entry->par_d != 1) &&
|
if ((entry->par_n != 1 || entry->par_d != 1) &&
|
||||||
|
@ -3497,12 +3498,10 @@ atom_trak_set_video_type (AtomTRAK * trak, AtomsContext * context,
|
||||||
/* ISO file spec says track header w/h indicates track's visual presentation
|
/* ISO file spec says track header w/h indicates track's visual presentation
|
||||||
* (so this together with pixels w/h implicitly defines PAR) */
|
* (so this together with pixels w/h implicitly defines PAR) */
|
||||||
if (par_n && (context->flavor != ATOMS_TREE_FLAVOR_MOV)) {
|
if (par_n && (context->flavor != ATOMS_TREE_FLAVOR_MOV)) {
|
||||||
if (par_n > par_d) {
|
/* Assumes square pixels display */
|
||||||
dwidth = entry->width * par_n / par_d;
|
if (!gst_video_calculate_display_ratio (&dwidth, &dheight, entry->width,
|
||||||
dheight = entry->height;
|
entry->height, par_n, par_d, 1, 1)) {
|
||||||
} else {
|
GST_WARNING ("Could not calculate display ratio");
|
||||||
dwidth = entry->width * par_n / par_d;
|
|
||||||
dheight = entry->height;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue