You've already forked libopenshot
mirror of
https://github.com/OpenShot/libopenshot.git
synced 2026-03-02 08:53:52 -08:00
Merge branch 'develop' into clip-refactor-keyframes
# Conflicts: # src/CacheDisk.cpp # src/Clip.cpp # src/Frame.cpp # src/QtHtmlReader.cpp # src/QtImageReader.cpp # src/QtTextReader.cpp # src/effects/Bars.cpp # src/effects/Crop.cpp
This commit is contained in:
@@ -86,7 +86,7 @@ int hw_de_on = 0;
|
||||
AVHWDeviceType hw_de_av_device_type_global = AV_HWDEVICE_TYPE_NONE;
|
||||
#endif
|
||||
|
||||
FFmpegReader::FFmpegReader(std::string path)
|
||||
FFmpegReader::FFmpegReader(const std::string& path, bool inspect_reader)
|
||||
: last_frame(0), is_seeking(0), seeking_pts(0), seeking_frame(0), seek_count(0),
|
||||
audio_pts_offset(99999), video_pts_offset(99999), path(path), is_video_seek(true), check_interlace(false),
|
||||
check_fps(false), enable_seek(true), is_open(false), seek_audio_frame_found(0), seek_video_frame_found(0),
|
||||
@@ -94,27 +94,11 @@ FFmpegReader::FFmpegReader(std::string path)
|
||||
current_video_frame(0), has_missing_frames(false), num_packets_since_video_frame(0), num_checks_since_final(0),
|
||||
packet(NULL) {
|
||||
|
||||
// Initialize FFMpeg, and register all formats and codecs
|
||||
AV_REGISTER_ALL
|
||||
AVCODEC_REGISTER_ALL
|
||||
|
||||
// Init cache
|
||||
working_cache.SetMaxBytesFromInfo(OPEN_MP_NUM_PROCESSORS * info.fps.ToDouble() * 2, info.width, info.height, info.sample_rate, info.channels);
|
||||
missing_frames.SetMaxBytesFromInfo(OPEN_MP_NUM_PROCESSORS * 2, info.width, info.height, info.sample_rate, info.channels);
|
||||
final_cache.SetMaxBytesFromInfo(OPEN_MP_NUM_PROCESSORS * 2, info.width, info.height, info.sample_rate, info.channels);
|
||||
|
||||
// Open and Close the reader, to populate its attributes (such as height, width, etc...)
|
||||
Open();
|
||||
Close();
|
||||
}
|
||||
|
||||
FFmpegReader::FFmpegReader(std::string path, bool inspect_reader)
|
||||
: last_frame(0), is_seeking(0), seeking_pts(0), seeking_frame(0), seek_count(0),
|
||||
audio_pts_offset(99999), video_pts_offset(99999), path(path), is_video_seek(true), check_interlace(false),
|
||||
check_fps(false), enable_seek(true), is_open(false), seek_audio_frame_found(0), seek_video_frame_found(0),
|
||||
prev_samples(0), prev_pts(0), pts_total(0), pts_counter(0), is_duration_known(false), largest_frame_processed(0),
|
||||
current_video_frame(0), has_missing_frames(false), num_packets_since_video_frame(0), num_checks_since_final(0),
|
||||
packet(NULL) {
|
||||
// Configure OpenMP parallelism
|
||||
// Default number of threads per section
|
||||
omp_set_num_threads(OPEN_MP_NUM_PROCESSORS);
|
||||
// Allow nested parallel sections as deeply as supported
|
||||
omp_set_max_active_levels(OPEN_MP_MAX_ACTIVE);
|
||||
|
||||
// Initialize FFMpeg, and register all formats and codecs
|
||||
AV_REGISTER_ALL
|
||||
@@ -901,11 +885,6 @@ std::shared_ptr<Frame> FFmpegReader::ReadStream(int64_t requested_frame) {
|
||||
int minimum_packets = OPEN_MP_NUM_PROCESSORS;
|
||||
int max_packets = 4096;
|
||||
|
||||
// Set the number of threads in OpenMP
|
||||
omp_set_num_threads(OPEN_MP_NUM_PROCESSORS);
|
||||
// Allow nested OpenMP sections
|
||||
omp_set_nested(true);
|
||||
|
||||
// Debug output
|
||||
ZmqLogger::Instance()->AppendDebugMethod("FFmpegReader::ReadStream", "requested_frame", requested_frame, "OPEN_MP_NUM_PROCESSORS", OPEN_MP_NUM_PROCESSORS);
|
||||
|
||||
@@ -2160,7 +2139,7 @@ bool FFmpegReader::CheckMissingFrame(int64_t requested_frame) {
|
||||
// Add this frame to the processed map (since it's already done)
|
||||
std::shared_ptr<QImage> parent_image = parent_frame->GetImage();
|
||||
if (parent_image) {
|
||||
missing_frame->AddImage(std::shared_ptr<QImage>(new QImage(*parent_image)));
|
||||
missing_frame->AddImage(std::make_shared<QImage>(*parent_image));
|
||||
processed_video_frames[missing_frame->number] = missing_frame->number;
|
||||
}
|
||||
}
|
||||
@@ -2250,7 +2229,7 @@ void FFmpegReader::CheckWorkingFrames(bool end_of_stream, int64_t requested_fram
|
||||
|
||||
if (info.has_video && !is_video_ready && last_video_frame) {
|
||||
// Copy image from last frame
|
||||
f->AddImage(std::shared_ptr<QImage>(new QImage(*last_video_frame->GetImage())));
|
||||
f->AddImage(std::make_shared<QImage>(*last_video_frame->GetImage()));
|
||||
is_video_ready = true;
|
||||
}
|
||||
|
||||
@@ -2272,7 +2251,7 @@ void FFmpegReader::CheckWorkingFrames(bool end_of_stream, int64_t requested_fram
|
||||
// Add missing image (if needed - sometimes end_of_stream causes frames with only audio)
|
||||
if (info.has_video && !is_video_ready && last_video_frame)
|
||||
// Copy image from last frame
|
||||
f->AddImage(std::shared_ptr<QImage>(new QImage(*last_video_frame->GetImage())));
|
||||
f->AddImage(std::make_shared<QImage>(*last_video_frame->GetImage()));
|
||||
|
||||
// Reset counter since last 'final' frame
|
||||
num_checks_since_final = 0;
|
||||
|
||||
Reference in New Issue
Block a user