Commit Graph
3455 Commits
Author SHA1 Message Date
0xFelix 16da47384d Set AccessMode of MediaIO according to QIODevice it is created from
When creating MediaIO from QIODevice in AVMuxer's setMedia one had to
manually call mediaIO() after and set the MediaIO's AccessMode to
writable. This patch checks if the QIODevice is writable and then sets
MediaIO's AccessMode automatically.
2017-10-16 11:24:31 +02:00
WangBin f8d9982e58 Merge pull request #970 from 0xFelix/splitAudioFrames
Split audio frames
2017-10-16 17:10:13 +08:00
0xFelix 09edeadb82 Fall back to not splitting AudioFrames if AudioEncoder did not set a frame_size 2017-10-16 11:05:56 +02:00
WangBin a84ccc93df Merge pull request #964 from nejatafshar/fixQmlVideoOutput2SourceChange
fix the bug that multiple players are rendered when changing source o…
2017-10-15 16:56:34 +08:00
WangBin 658eae6d68 Merge pull request #967 from 0xFelix/fixAVRaceCondition
Use dedicated variable to track open state of AVMuxer
2017-10-15 16:48:52 +08:00
WangBin cd07d20fd9 Merge pull request #968 from 0xFelix/applyAudioSettings
Copy over initial_padding, extradata_size and extradata from avctx to newly created audio stream
2017-10-13 20:21:32 +08:00
0xFelix c13a131dde Split AudioFrames according to the audio encoders frame_size
Some encoders (e.g. OPUS) define a frame_size for each audio frame
and only process that much data in one encoding step. This means that
the number of incoming frames does not have be equal to the number of
outgoing frames. This patch splits AudioFrames according to the audio
encoders frame_size and buffers the leftovers of a frame until the next
frame arrives and prepends them to it. This results in the decoupling of
incoming and outgoing frame sizes.
2017-10-13 13:49:57 +02:00
0xFelix b4b21a8cd4 Add function to prepend another AudioFrame to an AudioFrame 2017-10-13 13:49:57 +02:00
0xFelix dff0967971 Add mid function to AudioFrame to get an arbitrary portion of the frame 2017-10-13 13:49:57 +02:00
0xFelix 7bf1cbb05e Make kHz a static variable of AudioFormat 2017-10-13 13:49:57 +02:00
0xFelix ed1ac9684f Move frame_size from AudioEncoderFFmpegPrivate to AudioEncoderPrivate and make it accessible via getter 2017-10-13 13:49:57 +02:00
0xFelix be777a8e27 For libavcodec versions older than 56.5.100 use delay instead of initial_padding when setting up audio stream 2017-10-13 09:08:14 +02:00
WangBin 4959f402eb Merge pull request #969 from 0xFelix/fixAVTransCoderStop
Disconnect sourcePlayers signal stopped from vfilter/afilter when stopping AVTranscoder
2017-10-12 20:30:59 +08:00
WangBin c8058733b8 Merge pull request #966 from 0xFelix/master
Set avg_frame_rate only for video streams and don't use inverse of frameRate
2017-10-12 20:16:07 +08:00
Felix Matouschek 58245bb0e5 Disconnect sourcePlayers signal stopped from vfilter/afilter when
stopping AVTranscoder.

The missing disconnect leads to a second call to finish of vfilter/afilter
which then leads to a segmentation fault in sync mode. In async mode
the segmentation fault does not happen because of a race condition
although a second call is executed. Always stop AVTranscoder first and
then the associated AVPlayer.
2017-10-12 12:52:09 +02:00
Felix Matouschek 66ad0cc59a Use dedicated variable to track open state of AVMuxer
This fixes a race condition where an AVThread tries to access a sub
struct of format_ctx which has not yet been initialized but isOpen
already returns true.
2017-10-12 12:51:19 +02:00
Felix Matouschek 24c8dfbe6a Copy over initial_padding, extradata_size and extradata from avctx to
newly created audio stream

This is needed for audio codecs that for example use the CodecPrivate
element in the WEBM container. The CodecPrivate field can contain
headers or other additional data. The audio codec OPUS cannot be
decoded without this element. Some audio codecs also define an
initial_padding which can be written as CodecDelay into the WEBM
container.
2017-10-12 12:46:54 +02:00
Felix 03d2c19e34 Set avg_frame_rate only for video streams and don't use inverse of frameRate 2017-10-12 12:45:12 +02:00
wang-bin 45fb21043a sdk_deploy: dest lib name is *Qt5AV* 2017-10-11 17:56:29 +08:00
afshar 42c153cbb6 fix the bug that multiple players are rendered when changing source of VideoOutput2 on qml 2017-10-11 10:16:46 +03:30
wang-bin 9db34cdf64 ci: add vs2017 2017-10-06 23:43:29 +08:00
WangBin b17b3f6d68 Merge pull request #959 from 0xFelix/master
Set the avg_frame_rate for newly created AVStream (Fixes #955)
2017-10-06 22:33:12 +08:00
Felix Matouschek abf42f5fba Set avg_frame_rate of newly created AVStream in AVMuxer to frame_rate of
the associated VideoEncoder

Fixes the calculation of the DefaultDuration field for MKV/WEBM files.
Otherwise the DefaultDuration would have been equal to the time_base
(1000ms / fps) which leads to playback failures in Google Chrome.
2017-10-05 16:23:50 +02:00
wang-bin dff05bbb7c example: implement intermediate fbo for filtering rgb texture 2017-09-21 15:57:18 +08:00
wang-bin b963adc3fa vumeter: fix channel data sampling 2017-09-05 11:35:27 +08:00
WangBin 26e3658e23 Merge pull request #943 from wangwenx190/patch-seek-chapter
添加章节跳转的槽函数,已初步测试通过。
2017-08-22 00:07:32 -05:00
赵宇航 512ed74e1c 修正类型错误。 2017-08-22 12:16:48 +08:00
赵宇航 090ebb253b 添加章节跳转的槽函数,已初步测试通过。 2017-08-22 12:08:47 +08:00
WangBin fc15d1ff09 Merge pull request #937 from felixonmars/patch-1
Fix a typo in README
2017-08-08 09:49:20 +08:00
Felix Yan b6482b0d5e Fix a typo in README 2017-08-07 14:34:59 -05:00
wang-bin 2110aa6028 qml: VideoOutput/VideoOutput2.source can be an AVPlayer object #935
use c++ player and qml renderer
2017-08-06 16:50:11 +08:00
wang-bin 206d89faae fix qtav version in cmake 2017-08-04 09:32:05 +08:00
wang-bin 5aa04f3bbf fix seek if media has no audio stream and start time > 0 2017-08-01 15:26:45 +08:00
WangBin cf931f78ac Merge pull request #933 from wangwenx190/master
修复Player出现视频预览小窗后其解码所需的额外内存不会在其关闭后释放的问题
2017-07-31 09:44:51 +08:00
WangBin 08f2f87c75 Update MainWindow.cpp 2017-07-31 09:42:59 +08:00
wangwenx190 f6458955ee 使m_preview成为一个Tool Window,这样它就不会显示在任务栏上了 2017-07-30 22:40:57 +08:00
wangwenx190 ef3d1d3923 修复Player出现视频预览小窗后其解码所需的额外内存不会在其关闭后释放的问题
鼠标离开TimeSlider后即删除m_preview窗口,其解码过程即刻停止,内存占用即可下降
2017-07-30 22:23:12 +08:00
wang-bin cda61b264b fix qml plugin source dir #928 2017-07-26 17:16:21 +08:00
WangBin b85c69a26c Merge pull request #926 from cynnyx/master
Allow QtAV to be used as a cmake external project
2017-07-25 18:36:42 +08:00
Michele Caini 528769c091 allow QtAV to be used as a cmake external project 2017-07-25 12:16:59 +02:00
wang-bin 78f1814968 fix cuD3D9CtxCreate error #920 2017-07-20 13:01:17 +08:00
wang-bin acd681666f qml: user filter life time is managed by qml engine 2017-07-19 21:42:13 +08:00
wang-bin fa2720148d examples: add vu meter filter 2017-07-19 21:13:16 +08:00
wang-bin e92757f967 qml: fix user filter ptr 2017-07-19 16:51:03 +08:00
wang-bin 51f9e8f738 add github issue template 2017-07-13 17:48:18 +08:00
WangBin 99e721ec4f Merge pull request #922 from cculianu/fix_vfextractor
Fixed esoteric bugs in VideoPreviewWidget and VideoFrameExtractor and added some features
2017-07-12 16:55:07 +08:00
Calin Culianu 5780035cfd got rid of QMutex altogether as per wang-bin's recommendation 2017-07-12 10:25:39 +03:00
Calin Culianu 68d8544118 videoframe extractor fix and videpreviewwidget fix and feature additions 2017-07-06 20:16:15 +03:00
wang-bin 5f5706c197 opensl: fix SL_RESULT_BUFFER_INSUFFICIENT error 2017-07-05 22:14:53 +08:00
WangBin 3360595035 Merge pull request #916 from cculianu/master
Added muxer stream_index key to internalAudioTracks, internalVideoTracks, externalAudioTracks in AVPlayer and misc other fixups
2017-07-04 17:16:53 +08:00