Commit graph

484 commits

Author SHA1 Message Date
Barry
e61a09f477 Add stream layer
The decoder initially read from the socket, decoded the video and sent
the decoded frames to the screen:

              +---------+      +----------+
  socket ---> | decoder | ---> |  screen  |
              +---------+      +----------+

The design was simple, but the decoder had several responsabilities.

Then we added the recording feature, so we added a recorder, which
reused the packets received from the socket managed by the decoder:

                                    +----------+
                               ---> |  screen  |
              +---------+     /     +----------+
  socket ---> | decoder | ----
              +---------+     \     +----------+
                               ---> | recorder |
                                    +----------+

This lack of separation of concerns now have concrete implications: we
could not (properly) disable the decoder/display to only record the
video.

Therefore, split the decoder to extract the stream:

                                    +----------+      +----------+
                               ---> | decoder  | ---> |  screen  |
              +---------+     /     +----------+      +----------+
  socket ---> | stream  | ----
              +---------+     \     +----------+
                               ---> | recorder |
                                    +----------+

This will allow to record the stream without decoding the video.
2019-06-18 14:40:25 +08:00
Barry
2d6dfc09e1 fix:recording with old decoding/encoding API
The deprecated avcodec_decode_video2() should always the whole packet,
so there is no need to loop (cf doc/examples/demuxing_decoding.c in
FFmpeg).

This hack changed the packet size and data pointer. This broke recording
which used the same packet.
2019-06-15 18:33:08 +08:00
Barry
667b09259c update:VideoBuffer stop重命名为interrupt 2019-06-15 18:29:19 +08:00
Barry
83fbdb5c23 update:frame类重命名为videobuffer类 2019-06-15 18:25:32 +08:00
Barry
a451b0feee update:移除解码器中没用的mutex 2019-06-15 18:09:28 +08:00
Barry
743b2398c9 add:下拉通知栏 2019-06-15 18:07:16 +08:00
Barry
3bee801fd7 add:视频窗口始终在前 2019-06-15 07:56:06 +08:00
Barry
d7532cef33 update:固定尺寸 2019-06-15 07:34:36 +08:00
Barry
8d83585130 add:compat.h 2019-06-15 07:24:07 +08:00
Barry
70eccc0f61 add:录像支持mkv 2019-06-15 06:45:12 +08:00
Barry
0348fe15b5 fix:decoder内存泄漏 2019-06-12 09:14:44 +08:00
Barry
cf459bbd32 add:Rescale packet timestamp to container time base
Some containers force their own time base. For example, matroska
overwrite time_base to (AVRational) {1, 1000}.

Therefore, rescale our packet timestamps to the output stream time base.
2019-06-12 09:07:31 +08:00
Barry
247f8eb1d1 update:Write header file with correct extradata 2019-06-12 08:56:19 +08:00
Barry
43c1b6870f add:转发ffmpeg log 2019-06-12 08:08:26 +08:00
Barry
eded0d1f78 fix:decoderBuffer内存泄漏 2019-06-12 07:49:35 +08:00
Barry
39eea20b6c fix:incorrect comment 2019-06-12 07:07:10 +08:00
Barry
748ba63a64 add:增加bug备注 2019-05-07 23:38:10 +08:00
Barry
650419056a Merge branch 'master' of https://gitee.com/Barryda/QtScrcpy 2019-04-14 14:04:53 +08:00
Barry
771d14e825 update:add default port 2019-04-14 14:04:33 +08:00
rankun
56e1ce6200 fix:mac编译不过 2019-03-21 14:35:06 +08:00
Barry
6d216191d9 Merge branch 'master' of https://gitee.com/Barryda/QtScrcpy 2019-02-25 22:35:30 +08:00
Barry
437a58624f forward时防止早连接 2019-02-25 22:35:08 +08:00
rankun
7165c60cb3 update:mousetap重构 2019-02-18 13:27:54 +08:00
rankun
a53fe2ad04 update:qtquick可选 2019-02-18 12:46:38 +08:00
rankun
f8908549ce update:mac限制鼠标移动 2019-02-10 20:22:29 +08:00
rankun
2d94db6dbd update:mac不去掉标题栏 2019-02-04 18:43:16 +08:00
rankun
b879451402 update:全屏后设置焦点,防止工具栏抢焦点 2019-02-04 18:05:40 +08:00
rankun
b8ce7d6bd2 Merge branch 'master' of gitee.com:Barryda/QtScrcpy 2019-02-04 13:57:51 +08:00
rankun
9610545e97 update:全屏模式不显示工具窗口 2019-02-04 13:57:34 +08:00
Barry
de71c88b24 update:美化工具窗口 2019-01-27 20:02:17 +08:00
rankun
618e6a099b update:mac异形窗口+全屏解决 2019-01-27 19:32:02 +08:00
Unknown
1d54d9b385 update:更新ffmpeg编译参数详解 2019-01-27 18:10:19 +08:00
Unknown
3b6041d893 linux下重新编译ffmpeg来支持封装h264到mp4文件 2019-01-27 18:05:55 +08:00
Unknown
9506957da4 fix:避免子线程更新ui 2019-01-27 16:38:47 +08:00
Unknown
01898bfbda setFixedSize影响linux全屏,
fremlesswindow不影响linux全屏
2019-01-27 16:20:09 +08:00
Barry
5f1c120a89 update:视频窗口固定大小 2019-01-27 15:57:37 +08:00
rankun
7d06d4582a fix:mac下运行依赖ffmpeg dylib 2019-01-27 15:51:44 +08:00
rankun
df6681742b fix:mac上无边框窗口全屏有问题,暂时屏蔽 2019-01-27 15:43:06 +08:00
rankun
0c3c5d892d fix: 修复mac编译不过 2019-01-27 15:02:45 +08:00
Barry
7294e2a3a6 update:更新TODO 2019-01-27 14:50:09 +08:00
Barry
e91b3df4de fix:不录像时传递sendframemeta false 给server 2019-01-27 14:41:29 +08:00
Barry
d67930a1ab update:限制横屏手机最大宽度 2019-01-27 14:28:11 +08:00
Barry
936a9cb6c8 update:完成mp4录制 2019-01-27 14:01:03 +08:00
Barry
748f845f1e update:录制mp4完善,更新语言 2019-01-27 13:46:04 +08:00
Barry
4557795f14 update:mp4录制功能完善 2019-01-27 13:37:49 +08:00
Barry
616799fd24 mp4录制(未完成) 2019-01-27 02:23:57 +08:00
Barry
5ba3e98b07 update:全屏状态禁止电脑锁屏(qt未提供跨平台方案,目前仅windows,可参考sdl找到跨平台方案) 2019-01-27 00:03:40 +08:00
Barry
37bd19acf4 update:更新翻译 2019-01-26 23:47:08 +08:00
Barry
6709c10346 update:文件拖拽与apk安装 2019-01-26 23:40:51 +08:00
Barry
a3f56669f7 fix:opengl未执行初始化的情况下执行清理会触发assert 2019-01-26 22:10:55 +08:00