summaryrefslogtreecommitdiff
path: root/xine/xvdr_metronom.c
diff options
context:
space:
mode:
authorcvs2svn <admin@example.com>2010-04-04 19:20:29 +0000
committercvs2svn <admin@example.com>2010-04-04 19:20:29 +0000
commitcde3ee7dade952baf6274f38ca81b316fbcf0c6a (patch)
treefd73f71d41a6d9b9a66c37eb3e6e172a6155aed3 /xine/xvdr_metronom.c
parent07de8081b90d309a2b8aaa6050b8e71fa017ae2f (diff)
downloadxineliboutput-libbluray-r103.tar.gz
xineliboutput-libbluray-r103.tar.bz2
This commit was manufactured by cvs2svn to create tag 'libbluray-r103'.libbluray-r103
Diffstat (limited to 'xine/xvdr_metronom.c')
-rw-r--r--xine/xvdr_metronom.c241
1 files changed, 0 insertions, 241 deletions
diff --git a/xine/xvdr_metronom.c b/xine/xvdr_metronom.c
deleted file mode 100644
index ac8babd2..00000000
--- a/xine/xvdr_metronom.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * xvdr_metronom.c:
- *
- * See the main source file 'xineliboutput.c' for copyright information and
- * how to reach the author.
- *
- * $Id: xvdr_metronom.c,v 1.11 2010-03-21 10:44:24 phintuka Exp $
- *
- */
-
-#include <stdlib.h>
-
-#include <xine/xine_internal.h>
-#include <xine/metronom.h>
-
-#define LOG_MODULENAME "[metronom ] "
-#define SysLogLevel iSysLogLevel
-#include "../logdefs.h"
-
-#define XVDR_METRONOM_COMPILE
-#include "xvdr_metronom.h"
-
-
-static void got_video_frame(metronom_t *metronom, vo_frame_t *frame)
-{
- xvdr_metronom_t *this = (xvdr_metronom_t *)metronom;
- int64_t pts = frame->pts;
-
- this->video_frames++;
-
- if (this->frame_decoded)
- this->frame_decoded(this->handle, this->video_frames, this->audio_frames);
-
- if (this->still_mode) {
- LOGMSG("Still frame, type %d", frame->picture_coding_type);
- frame->pts = 0;
- }
-
- if (this->trickspeed) {
- frame->pts = 0;
- frame->duration *= 12; /* GOP */
- }
-
- this->orig_metronom->got_video_frame (this->orig_metronom, frame);
-
- frame->pts = pts;
-}
-
-static int64_t got_audio_samples(metronom_t *metronom, int64_t pts, int nsamples)
-{
- xvdr_metronom_t *this = (xvdr_metronom_t *)metronom;
-
- this->audio_frames++;
-
- if (this->frame_decoded)
- this->frame_decoded(this->handle, this->video_frames, this->audio_frames);
-
- return this->orig_metronom->got_audio_samples (this->orig_metronom, pts, nsamples);
-}
-
-/*
- * dummy hooks
- */
-
-static int64_t got_spu_packet(metronom_t *metronom, int64_t pts)
-{
- xvdr_metronom_t *this = (xvdr_metronom_t *)metronom;
- return this->orig_metronom->got_spu_packet(this->orig_metronom, pts);
-}
-
-static void handle_audio_discontinuity(metronom_t *metronom, int type, int64_t disc_off)
-{
- xvdr_metronom_t *this = (xvdr_metronom_t *)metronom;
- this->orig_metronom->handle_audio_discontinuity(this->orig_metronom, type, disc_off);
-}
-
-static void handle_video_discontinuity(metronom_t *metronom, int type, int64_t disc_off)
-{
- xvdr_metronom_t *this = (xvdr_metronom_t *)metronom;
- this->orig_metronom->handle_video_discontinuity(this->orig_metronom, type, disc_off);
-}
-
-static void set_audio_rate(metronom_t *metronom, int64_t pts_per_smpls)
-{
- xvdr_metronom_t *this = (xvdr_metronom_t *)metronom;
- this->orig_metronom->set_audio_rate(this->orig_metronom, pts_per_smpls);
-}
-
-static void set_option(metronom_t *metronom, int option, int64_t value)
-{
- xvdr_metronom_t *this = (xvdr_metronom_t *)metronom;
-
- if (option == XVDR_METRONOM_LAST_VO_PTS) {
- if (value > 0)
- this->last_vo_pts = value;
- return;
- }
-
- this->orig_metronom->set_option(this->orig_metronom, option, value);
-}
-
-static int64_t get_option(metronom_t *metronom, int option)
-{
- xvdr_metronom_t *this = (xvdr_metronom_t *)metronom;
-
- if (option == XVDR_METRONOM_LAST_VO_PTS) {
- return this->last_vo_pts;
- }
- if (option == XVDR_METRONOM_TRICK_SPEED) {
- return this->trickspeed;
- }
- if (option == XVDR_METRONOM_STILL_MODE) {
- return this->still_mode;
- }
-
- return this->orig_metronom->get_option(this->orig_metronom, option);
-}
-
-static void set_master(metronom_t *metronom, metronom_t *master)
-{
- xvdr_metronom_t *this = (xvdr_metronom_t *)metronom;
- this->orig_metronom->set_master(this->orig_metronom, master);
-}
-
-static void metronom_exit(metronom_t *metronom)
-{
- xvdr_metronom_t *this = (xvdr_metronom_t *)metronom;
-
- LOGMSG("xvdr_metronom: metronom_exit() called !");
-
- /* un-hook */
- this->unwire(this);
- this->stream = NULL;
-
- if (this->orig_metronom) {
- metronom_t *orig_metronom = this->orig_metronom;
- this->orig_metronom = NULL;
-
- orig_metronom->exit(orig_metronom);
- }
-}
-
-/*
- * xvdr_metronom_t
- */
-
-static void xvdr_metronom_set_cb(xvdr_metronom_t *this,
- void (*cb)(void*, uint, uint),
- void *handle)
-{
- this->handle = handle;
- this->frame_decoded = cb;
-}
-
-static void xvdr_metronom_reset_frames(xvdr_metronom_t *this)
-{
- this->video_frames = this->audio_frames = 0;
-}
-
-static void xvdr_metronom_set_trickspeed(xvdr_metronom_t *this, int trickspeed)
-{
- this->trickspeed = trickspeed;
-}
-
-static void xvdr_metronom_set_still_mode(xvdr_metronom_t *this, int still_mode)
-{
- this->still_mode = still_mode;
-}
-
-static void xvdr_metronom_wire(xvdr_metronom_t *this)
-{
- if (!this->stream) {
- LOGMSG("xvdr_metronom_wire(): stream == NULL !");
- return;
- }
- if (!this->stream->metronom) {
- LOGMSG("xvdr_metronom_wire(): stream->metronom == NULL !");
- return;
- }
-
- if (!this->wired) {
- this->wired = 1;
-
- /* attach to stream */
- this->orig_metronom = this->stream->metronom;
- this->stream->metronom = &this->metronom;
- }
-}
-
-static void xvdr_metronom_unwire(xvdr_metronom_t *this)
-{
- if (this->stream && this->wired) {
- this->wired = 0;
-
- /* detach from stream */
- this->stream->metronom = this->orig_metronom;
- }
-}
-
-static void xvdr_metronom_dispose(xvdr_metronom_t *this)
-{
- xvdr_metronom_unwire(this);
-
- free(this);
-}
-
-/*
- * init
- */
-
-xvdr_metronom_t *xvdr_metronom_init(xine_stream_t *stream)
-{
- xvdr_metronom_t *this = calloc(1, sizeof(xvdr_metronom_t));
-
- this->stream = stream;
- this->orig_metronom = stream->metronom;
-
- this->set_cb = xvdr_metronom_set_cb;
- this->reset_frames = xvdr_metronom_reset_frames;
- this->set_trickspeed = xvdr_metronom_set_trickspeed;
- this->set_still_mode = xvdr_metronom_set_still_mode;
- this->wire = xvdr_metronom_wire;
- this->unwire = xvdr_metronom_unwire;
- this->dispose = xvdr_metronom_dispose;
-
- this->metronom.set_audio_rate = set_audio_rate;
- this->metronom.got_video_frame = got_video_frame;
- this->metronom.got_audio_samples = got_audio_samples;
- this->metronom.got_spu_packet = got_spu_packet;
- this->metronom.handle_audio_discontinuity = handle_audio_discontinuity;
- this->metronom.handle_video_discontinuity = handle_video_discontinuity;
- this->metronom.set_option = set_option;
- this->metronom.get_option = get_option;
- this->metronom.set_master = set_master;
-
- this->metronom.exit = metronom_exit;
-
- xvdr_metronom_wire(this);
-
- return this;
-}