| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Edit list cuts are not always on keyframe boundaries and therefore
sometimes require dropping frames after decoding them.
AV_PKT_FLAG_DISCARD tells us when to do this.
Fixes https://github.com/HandBrake/HandBrake/issues/1900
|
| |
|
|
|
|
|
|
|
|
|
| |
Propagates pix_fmt, range, primaries, transfer, and matrix everywhere.
Everything that passes or creates video frames tags the frames with
their color matrix info.
All filters know the expected color matrix info of input frames.
|
|
|
|
|
|
| |
Use this interface in decavcodec.
Remove cropscale.c and use avfilter for crop and scale.
Improve log output of filters that are aliases for avfilter.
|
| |
|
|
|
| |
Note that since webm has no official subtitle support, only burned in subtitles can be used with this muxer at this time.
|
|
|
|
| |
Fixes https://github.com/HandBrake/HandBrake/issues/1590
|
|
|
|
|
|
|
|
|
| |
Adds a function to mirror image data into stride region. Mirroring the
data results in a less visible artefact down the right edge of the
image. Blanking resulted in a dark edge artefact.
Keeps function that blanks stride region and improves it's speed,
although it's not currently used.
|
|
|
|
|
|
| |
Zero is not black. Stride is used in computations and is assumed black.
Fixes https://github.com/HandBrake/HandBrake/issues/1751
|
|
|
|
|
| |
We were only applying SSA inline override tags. With this patch we now
parse SSA style descritions in the SSA header and apply them per event.
|
| |
|
|
|
| |
Found via `codespell -q 3 --skip="./gtk/po`
|
| |
|
| |
|
|
|
| |
Fixes https://forum.handbrake.fr/viewtopic.php?f=5&t=37034
|
|
|
|
| |
It was only used for scaling, it fails far too often and is only
faster on a limited selectoin of hardware.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This wrapper can be used to frame parallelize simple video filters. By
simple, I mean there can be no temporal context that is shared from one
frame to the next.
Wrap unsharp and lapsharp filters. unsharp required a small rework to
separate out temporary storage that is required when processing each
frame. We now need to duplicate this storage for each thread.
Closes #759.
|
| |
|
|
|
|
| |
Closes #525.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* text subs: use generic font family names
Allows the platform more flexibility in choosing the "best" font for the
platform.
* rendersub: make font configurable per platform
Use Lucida Console for mono font on windows since it chooses ugly,
difficult to read Courier New when using monospace family name.
|
|
|
|
| |
Fixes https://github.com/HandBrake/HandBrake/issues/501
|
|
|
|
|
| |
This prevents libav from adding an mp4 edit list entry that causes a
properly functioning player to drop the first couple of audio frames.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Convert qsv_livav.[ch] to be built within libhb.
Convert other files to use qsv_libav.h in place of libavcodec/qsv.h
Don't attempt to build libav with QSV support (not available in unpatched release/11 branch).
QSV-accelerated decoding is broken, so disable it for the time being.
|
| |
|
|
|
|
|
|
|
| |
key frame or a reference frame.
HB_FRAME_KEY and REF are in fact masks, not flags,
and actually conflict with some PIC_FLAG_* values.
|
|
|
|
| |
Makes it easier to avoid adding elements with confilcting values.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* sync: correct timestamp discontinuities in sync instead of reader
This patch passes discontinuity information through the pipeline till it
reaches sync.c. The timestamps are passed through the pipeline as read
and unmodified to sync.c (instead of attempting to correct
discontinuities in reader). In sync, when we see a discontinuity,
we know where the next timestamp should be based on the timestamp
and duration of the previous buffer (before the discontinuity). So
we calculate an "SCR" offset based on the timestamp after the
discontinuity and what we calculate it should be.
The old discontinuity handling code was broken due to the following.
The MPEG STD timing model relies heavily on the decoder having an STC
that is phase lock looped to the PCRs in the stream. When decoding a
broadcast stream, the decoder can count on the time measure between PCRs
using the STC to match to a high degree of accuracy.
I.e. STC - lastSTC == PCR - lastPCR. When a discontinuity occurs, the
decoder calculates a new PCR offset = PCR - STC. I.e. the offset is the
new PCR value minus what it would have been if there had been no
discontinuity.
The above does not work without a reliable STC, which we do not have.
We have been attempting to approximate one by avereraging the duration
of received packets and extrapolating an "STC" based on the last PTS and
the average packet duration. But this is highly variable and
unreliable.
* decavcodec: fix data type of next_pts
It needs to be double so that partial ticks are not lost
* deccc608sub: clarify comment
* sync: allow queueing more audio
Audio is small, and there is often a significant amount of audio in the
stream before the first video frame.
* sync: improve handling of damaged streams
When data is missing, the audio decoder was extrapolating timestamps
from the last pts before the error caused by the missing data which
caused sync issues.
Also, missing data can cause the video decoder to output a frame out of
order with the wrong scr sequence. Drop such frames.
|
|
|
|
|
|
| |
When more than 2 subtitles overlapped in time, they were not merged
properly and could result in cases where the subtitle time went
backwards
|
| |
|
|
|
|
|
| |
Eliminate the need for everyone to assume that the first chapter starts
at the first frame.
|
|
|
|
|
|
|
|
|
| |
* remove dxva hw decode
It provides practically no speed increase even on a slow CPU and results
in a speed decrease on fast CPUs. And the code is exceptionally fugly.
* cli: remove USE_HWD
|
| |
|
| |
|
|
|
|
| |
HTTPS and it's terrible code.
|
| |
|
|
|
|
|
|
|
|
|
| |
Only deinterlace frames that are marked as interlaced when mode
HB_YADIF_AUTO is set in the filter settings.
Currently, this would cause no frames to be deinterlaced since all
frames are marked non-interlaced. This option will become useful in a
subsequent patch that splits comb detection into it's own filter.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New filter types HB_FILTER_AVFILTER and HB_FILTER_PAD.
Settings for HB_FILTER_AVFILTER are the same as you would pass to avconv
from the command line -vf option, except that we do not support
multi-input or multi-output filters.
Settings for HB_FILTER_PAD are "width:height:color:x_offset:y_offset".
width x height is the size of the output frame after padding.
color may be a w3c color name or RGB value (default black).
x_offset, y_offset is the position of the video within the padded area
(default centered).
Any of the values may be omitted or "auto".
|
|
|
|
|
|
|
|
|
|
|
| |
sync.c was difficult to read, fragile, and prone to difficult to
diagnose bugs (see
https://forum.handbrake.fr/viewtopic.php?f=12&t=33147)
This rewrite simplifies the code, removes signals, locking and yield
that probably cause the above problem and is much more flexible. It
fixes a wider variety of timestamp issues than before and is much easier
to extend if other timestamp analysis is desired.
|
| |
|
|
|
|
|
|
|
|
| |
We split PES packets when there is a PCR change in the middle of the
packet. This works fine for audio and video where the decoder parses
the ES to find frame boundaries. But it does not work for some decoders
such as PGS subtitles. So mark split buffers and reassemble them in
reader after processing the PCR change.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
simplify job initialization sequence, clean up code, and document
dependencies in the sequence better.
Make hb_add set job->sequence_id. It is no longer necessary for the
frontend to do this. If the frontend needs the sequence_id, it is
returned by hb_add().
Clean up use of interjob. do_job() now uses sequence_id to detect when
a new sequence of related jobs is running and automatically clears
interjob.
|
|
|
|
|
| |
libav just deprecated AVPicture and all av_picture_*/avpicture_*
functions.
|
|
|
|
|
| |
It only worked properly with the x264 encoder. Now it works with all
encoders.
|
|
|
|
|
| |
This brings together several independent implementations of a simple
buffer list manager.
|
|
|
|
|
| |
The video frame subtitles are meant to be rendered to may not match the
actual video we are encoding. So scale to match as needed.
|