| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
First problem was pre-existing, but hidden. Interleaving was severely
broken because we relied on buf->s.stop to determin interleave points.
stop is not guaranteed to be set.
Other problems with the new bit vector code caused failure to complete
muxing.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6187 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
| |
The limit was due to using an uint32_t as a bit vector. This solves
the limitation by introducing an hb_bitvec_t struct for bit vectors
of unlimited size.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6181 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
| |
Add support for font color to tx3g.
Allow more than one style flag at time in tx3g.
Add positioning support to CC subs
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6163 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
| |
Also remove the raw muxer.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6105 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6042 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
| |
CLI users: please use -f x265 instead of -f raw
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6027 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
|
| |
Build with --enable-x265 (requires CMake).
Use via HandBrakeCLI with -a none -e x265 -f raw
Only raw HEVC output is supported for now (no audio or subtitles).
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6023 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5876 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
| |
This makes libhb expect all strings passed to it to be in utf8 format.
The cli converts the converts from the current code page to utf8. libhb
converts back to the current code page when necessary for libraries that
expect it.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5798 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5620 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5318 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cleans up several several unavoidable memory leaks caused by old api.
Clearly separates titles from jobs. Titles are set during scan and
never modified now.
Since titles are immutable, this lead to API some changes. For example,
We were setting chapter names in the title from the front ends. Now
these get set in the job.
These new APIs allow us to start moving away from our use of title->job.
Eventually, I would like to eliminate title->job completely, but the
mac ui is too tightly tied to using this field to allow removing it
at this time. So there is temporarily a convenience function used
only by the mac ui that allows it to continue using title->job and also
use the new APIs.
New APIs:
typedef struct hb_title_set_s hb_title_set_t;
struct hb_title_set_s
{
hb_list_t * list_title;
int feature; // Detected DVD feature title
};
hb_title_set_t * hb_get_title_set( hb_handle_t * );
This is just something I added to clean up how "feature title" info
is passed.
hb_job_t * hb_job_init( hb_title_t * title );
Initializes a new job with default settings from the title.
hb_job_t * hb_job_init_by_index( hb_handle_t *h, int title_index );
Same as hb_job_init(). For use by win Interop lib.
void hb_job_reset( hb_job_t * job );
Convenience function for the MacUi.
Clears audio, subtitle, and filter lists. The macui still uses
title->job because it is so intricately tied to it. So I created
this convenience function that it can call after adding a job.
void hb_job_close( hb_job_t ** job );
Releases the job an all resources it contains.
void hb_job_set_advanced_opts( hb_job_t *job, const char *advanced_opts );
Makes a copy of "advanced_opts" and stores in job.
Freed by hb_job_close().
void hb_job_set_file( hb_job_t *job, const char *file );
Makes a copy of "file" and stores in job.
Freed by hb_job_close().
void hb_chapter_set_title(hb_chapter_t *chapter, const char *title);
Makes a copy of "title" and stores in chapter.
Freed by hb_chapter_close().
Recommended usage (cli and lingui are updated to do this):
job = hb_job_init( title );
// set job settings ...
hb_add(h, job);
hb_job_close( &job );
I have also added new APIs for managing metadata. These are
used to add metadata to a job.
void hb_metadata_set_name( hb_metadata_t *metadata, const char *name );
void hb_metadata_set_artist( hb_metadata_t *metadata, const char *artist );
void hb_metadata_set_composer( hb_metadata_t *metadata, const char *composer );
void hb_metadata_set_release_date( hb_metadata_t *metadata, const char *release_date );
void hb_metadata_set_comment( hb_metadata_t *metadata, const char *comment );
void hb_metadata_set_genre( hb_metadata_t *metadata, const char *genre );
void hb_metadata_set_album( hb_metadata_t *metadata, const char *album );
void hb_metadata_set_coverart( hb_metadata_t *metadata, const uint8_t *coverart, int size );
Example:
job = hb_job_init( &job );
// set job settings ...
hb_metadata_set_artist( job->metadata, "Danny Elfman" );
hb_add(h, job);
hb_job_close( &job );
Some APIs have changed in order to avoid using title incorrectly and
use the new hb_title_set_t.
-void hb_autopassthru_apply_settings( hb_job_t * job, hb_title_t * title );
+void hb_autopassthru_apply_settings( hb_job_t * job );
-void hb_get_preview( hb_handle_t *, hb_title_t *, int, uint8_t * );
+void hb_get_preview( hb_handle_t *, hb_job_t *, int, uint8_t * );
hb_thread_t * hb_scan_init( hb_handle_t *, volatile int * die,
const char * path, int title_index,
- hb_list_t * list_title, int preview_count,
+ hb_title_set_t * title_set, int preview_count,
int store_previews, uint64_t min_duration );
These APIs have been removed. Win Interop will need some changes.
I think what I've provided will be suffecient, but let me know if it's not.
-void hb_get_preview_by_index( hb_handle_t *, int, int, uint8_t * );
-void hb_set_anamorphic_size_by_index( hb_handle_t *, int,
- int *output_width, int *output_height,
- int *output_par_width, int *output_par_height );
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5058 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4737 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch enhances the filter objects. The 2 key improvements are:
1. A filter can change the image dimensions as frames pass through it.
2. A filter can output more than one frame.
In addition, I have:
Moved cropping & scalling into a filter object
Added 90 degree rotation to the rotate filter
Moved subtitle burn-in rendering to a filter object.
Moved VFR/CFR handling into a framerate shaping filter object.
Removed render.c since all it's responsibilities got moved to filters.
Improves VOBSUB and SSA subtitle handling. Allows subtitle animations.
SSA karaoke support.
My apologies in advance if anything breaks ;)
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4546 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Specifically, this affects closed captions which are pushed into the
pipeline very late. CC's are dribbled in 2 bytes per video frame.
The entire CC that we put into a subtitle frame isn't available till
we see the signal for the end of the CC. This can be several seconds
after it began. So I have established a minimum buffer size that the
muxer accumulates before it outputs any data. This allows CCs to get
into the pipeline before the muxer outputs the interleave interval that
they belong in.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4351 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
| |
Although the % option has been gone for a while in the cli and gui's,
there were some mappings happening in libhb and for preset imports.
This removes the last vestages of % quality mapping.
Thanks to Rodeo for the patch.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3857 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
| |
remove unused code relating to avi, ogm, psp, ipod, and forcing h264 levels
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3622 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
| |
If all streams are at EOF, then we must continue processing
the track queues till they are all empty.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3564 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3525 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The fifo depth limit that was put in place to prevent out of memory
conditions was too aggressive. It caused buffers to be flushed to
the output too early with cercain settings.
This change monitors memory usage (i.e. buffer sizes) rather
than just fifo depth in order to decide when to flush buffers
to prevent out of memory conditions.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3506 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
| |
if there is a persistant skew in timestamps from 2 streams, the
fifo depth could still continue to grow. Added extra check for
fullness of fifo.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3400 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
| |
where there's no audio, the muxer closes earlier than when there is audio
due to reference counting. upon close, the muxer sets the muxing
state which overwrites the current state that includes the avg fps.
so log the avg fps before closing mux.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3251 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the current audio buffer was being dropped when silence was inserted, causing
the time to fall even further behind and provoke more silence insertion
in some cases.
with pont-to-point, it is possible for one stream to complete before the
other(s). when the work_loop exits for that stream, the fifo is no longer
serviced and may fill. This can back up and cause a stall in reader
causing the streams that are not yet complete to stall. The Solution is
to continue servicing the fifo after work for a stream is complete. This was
complicated by the fact that the video sync work object was being used as the
indicator that all work was finished. When it exited everything was told
to stop. So now, the muxer work object (last in the chain) is the
indicator when work is done.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3197 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3173 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
| |
when skewed timestamps or premature end of a stream is encountered, the muxer
buffers streams in an attempt to interleave stream timestamps. this
threshold tells it when to give up. The previous value still allowed
out of memory conditions with windows 2GB per application limit.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3169 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
|
| |
having trouble interleaving timestamps
This prevents some out of memory crashes. In particular, it fixes
a crashed caused by a source in which the audio stream ends substantially
before the video stream ends.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3106 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
| |
also fix an issue where ffmpeg generated negative PTS for initial
frames of video.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3097 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
| |
Close prints mux stats and gets called for each stream. So only
print the stats when the last stream is closed.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3023 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
| |
and fix a couple potential leaks if the timing is just right in work loops
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3016 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
pipeline
For HD sources on an 8 core system with hyperthreading, we were using 1.5GB
of ram. Add to that the 600MB x264 uses for rc-lookahead, pushes it north of 2GB.
To reduce our memory usage, the fifo depths have been reduced are are no longer
a multiple of cpu count. Use of hb_snooze has been eliminated in the encoding
pipeline so that performance doesn't fall as a result of the reduced fifo depths.
In sync, each audio and video were given separate threads so that each can wait on
it's respective input fifo without blocking the others. In muxcommon, each stream
being muxed was given a separate thread so that each can wait on it's respective fifo.
This allows the removal of hb_snooze in the sync and muxer work loops. In both sync
and muxer, there is common data that is shared by all threads, so special init
routines allocate this shared data and initialize the threads.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3007 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2619 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
| |
- fixed ports.c to use a more portable method of getting integral pthread_t representation; resolves mingw crash.
- added GCC attribute to generate compiler warnings for invalid usage of hb_log, hb_deep_log and hb_errror;
see new macro HB_WPRINTF(s,v) in common.h.
- fixed various invalid usage of above functions on osx i386/x86_64, and mingw.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2618 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- when doing an indepth scan, do not scan CC tracks
- separate subtitle configureation attributes into separate
hb_subtitle_config_t. Add an instance of this to hb_job_t for
setting the attributes of the subtitle found through an indepth scan
- Add a default_track flag to hb_subtitle_config_t that tells the muxer
that the track should be flaged as the default. muxmkv uses this.
- When an indepth scan is complete, check to see if the autoselected
subtitle matchces (by id) one of the manually selected subtitles.
If a match is found, the autoselected subtitle with all the attributes
the user assigned to it replaces the manually selected subtitle.
- LinGui: Add "Default" column to subtitle tab. This is a radio that lets
the user choose which subtitle should be displayed by default.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2468 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
| |
OutputTrackChunk so subtitles get output as early as possible based on their start time rather than just before their stop time. (rdy is still checked for non-subtitle tracks since their rdy bit is in the allRdy mask that's tested in the outer loop.)
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2410 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
| |
the cluster where it starts, not the cluster where it ends.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2409 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
| |
initialize mux_data for passthru subtitles in muxmp4 and muxmkv
add non-continuous tracks for passthru subtitles in muxcommon
log closed caption data that gets to the muxer
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2393 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2391 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2378 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
| |
title, if selected then CC's are extracted, MP4 Muxer will dump the subs to the log at the end of encoding. TODO: Translate PTS for buf->start to HB format, add MP4 subtitle track and subs during muxing.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2375 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
| |
- Interleave media streams to reduce player buffer requirements and initial latency.
- Add support for intermittent media streams like subtitles or closed captions (we don't have any of these yet but may one day).
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2348 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
| |
memory-related logging to general-purpose housekeeping--stuff that isn't necessary when scrolling through activity logs users submit with bug reports and support queries. This includes things like thread start/exit messages and preview frames.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1820 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
|
|
| |
pieces so we don't get jerky output caused by out-of-order frames.
- add an explicit EOF for all streams, not just video.
- don't generate extra audio silence at the end of an encode (don't need it with explicit eof).
- get rid of 80ms initial delay in AAC encode & flush final four frames buffered in encoder.
- put mp4 'chap' atom on first track (usually video) rather than first audio track since we can now do video without audio (atom just needs to go on an enabled media track & video is always enabled).
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1581 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1559 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
| |
deadlock since video and audio run at different rates. Instead take the earliest available buffer (so we don't starve any of the fifos) but don't lock up if fifos are occasionally empty.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1542 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
| |
covers trunk files, libhb, and test.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1418 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
| |
Each audio track contains it's own settings for codec, bitrate, samplerate, etc.
This allows for very complex combinations of audio tracks if desired.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1365 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
| |
and the MacOS GUI. See the new subtitle language options in the GUI.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@844 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
|
|
|
|
| |
-Chapters don't work in VLC. I'll need to update the library to work-around this. Most other players should pick them up, however.
-PAR, check.
-x264 b-frames, check.
-Multi-track audio, check.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@680 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
|
|
| |
Should be slightly faster (maybe 1 fps), hopefully might fix some other random problems. It's located in the part of muxcommon.c that waits til the audio and video buffers are full before muxing packets. If the buffers aren't full, it snoozes. So I think it gets run 1 or more times for every frame. The snooze value got altered back in revision 98.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@437 b64f7644-9d1e-0410-96f1-a4d463321fa5
|
|
|
|
| |
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@422 b64f7644-9d1e-0410-96f1-a4d463321fa5
|