blob: 20a9879d678355e00e21a3bd7d72dd8b7ea32550 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/* $Id: envvobsub.c
This file is part of the HandBrake source code.
Homepage: <http://handbrake.fr/>.
It may be used under the terms of the GNU General Public License. */
#include "hb.h"
struct hb_work_private_s
{
hb_job_t * job;
};
int encsubInit( hb_work_object_t * w, hb_job_t * job )
{
hb_work_private_t * pv;
pv = calloc( 1, sizeof( hb_work_private_t ) );
w->private_data = pv;
pv->job = job;
return 0;
}
int encsubWork( hb_work_object_t * w, hb_buffer_t ** buf_in,
hb_buffer_t ** buf_out )
{
hb_buffer_t * in = *buf_in;
if (w->subtitle->source != VOBSUB)
{
// Invalid source, send EOF, this shouldn't ever happen
hb_log("encvobsub: invalid subtitle source");
hb_buffer_close( buf_in );
*buf_out = hb_buffer_init(0);
}
if ( in->size <= 0 )
{
/* EOF on input stream - send it downstream & say that we're done */
*buf_out = in;
*buf_in = NULL;
return HB_WORK_DONE;
}
/*
* Not much to do, just pass the buffer on.
* Some day, we may re-encode bd subtitles here ;)
*/
if (buf_out)
{
*buf_out = in;
*buf_in = NULL;
}
return HB_WORK_OK;
}
void encsubClose( hb_work_object_t * w )
{
free( w->private_data );
}
hb_work_object_t hb_encvobsub =
{
WORK_ENCVOBSUB,
"VOBSUB encoder",
encsubInit,
encsubWork,
encsubClose
};
|