player: add experimental stream recording feature

This is basically a WIP, but it can't remain in a branch forever. A
warning is print when using it as it's still a bit "shaky".
This commit is contained in:
wm4
2017-02-07 17:05:17 +01:00
parent 061b752217
commit 96a45a16af
17 changed files with 597 additions and 5 deletions

View File

@@ -29,6 +29,7 @@
#include "options/options.h"
#include "common/global.h"
#include "common/msg.h"
#include "common/recorder.h"
#include "osdep/threads.h"
extern const struct sd_functions sd_ass;
@@ -49,6 +50,8 @@ struct dec_sub {
struct mpv_global *global;
struct MPOpts *opts;
struct mp_recorder_sink *recorder_sink;
struct attachment_list *attachments;
struct sh_stream *sh;
@@ -240,6 +243,9 @@ bool sub_read_packets(struct dec_sub *sub, double video_pts)
break;
}
if (sub->recorder_sink)
mp_recorder_feed_packet(sub->recorder_sink, pkt);
sub->last_pkt_pts = pkt->pts;
if (is_new_segment(sub, pkt)) {
@@ -323,3 +329,11 @@ int sub_control(struct dec_sub *sub, enum sd_ctrl cmd, void *arg)
pthread_mutex_unlock(&sub->lock);
return r;
}
void sub_set_recorder_sink(struct dec_sub *sub, struct mp_recorder_sink *sink)
{
pthread_mutex_lock(&sub->lock);
sub->recorder_sink = sink;
pthread_mutex_unlock(&sub->lock);
}