static int decutf8Work(hb_work_object_t * w, hb_buffer_t **buf_in, hb_buffer_t **buf_out) { hb_work_private_t * pv = w->private_data; // Pass the packets through without modification hb_buffer_t *out = *buf_in; out->s.frametype = HB_FRAME_SUBTITLE; // Warn if the subtitle's duration has not been passed through by the // demuxer, which will prevent the subtitle from displaying at all if (out->s.stop == 0) { hb_log("decutf8sub: subtitle packet lacks duration"); } hb_srt_to_ssa(out, ++pv->line); *buf_in = NULL; *buf_out = out; if (out->size == 0) return HB_WORK_DONE; return HB_WORK_OK; }
static int decutf8Work(hb_work_object_t * w, hb_buffer_t **buf_in, hb_buffer_t **buf_out) { hb_work_private_t * pv = w->private_data; hb_buffer_t * in = *buf_in; hb_buffer_t *out = *buf_in; *buf_in = NULL; if (in->s.flags & HB_BUF_FLAG_EOF) { *buf_out = in; return HB_WORK_DONE; } // Warn if the subtitle's duration has not been passed through by the // demuxer, which will prevent the subtitle from displaying at all if (out->s.stop == 0) { hb_log("decutf8sub: subtitle packet lacks duration"); } hb_srt_to_ssa(out, ++pv->line); out->s.frametype = HB_FRAME_SUBTITLE; *buf_out = out; return HB_WORK_OK; }
static int decsrtWork( hb_work_object_t * w, hb_buffer_t ** buf_in, hb_buffer_t ** buf_out ) { hb_work_private_t * pv = w->private_data; hb_buffer_t * in = *buf_in; hb_buffer_t * out = NULL; out = srt_read( pv ); if( out ) { hb_srt_to_ssa(out, ++pv->line); /* * Keep a buffer in our input fifo so that we get run. */ hb_fifo_push( w->fifo_in, in); *buf_in = NULL; *buf_out = out; } else { *buf_out = NULL; return HB_WORK_OK; } return HB_WORK_OK; }
static int decsrtWork( hb_work_object_t * w, hb_buffer_t ** buf_in, hb_buffer_t ** buf_out ) { hb_work_private_t * pv = w->private_data; hb_buffer_t * out = NULL; if (pv->job->reader_pts_offset == AV_NOPTS_VALUE) { // We need to wait for reader to initialize it's pts offset so that // we know where to start reading SRTs. *buf_out = NULL; return HB_WORK_OK; } if (pv->start_time == AV_NOPTS_VALUE) { pv->start_time = pv->job->reader_pts_offset; if (pv->job->pts_to_stop > 0) { pv->stop_time = pv->job->pts_to_start + pv->job->pts_to_stop; } } out = srt_read( pv ); if (out != NULL) { hb_srt_to_ssa(out, ++pv->line); *buf_out = out; return HB_WORK_OK; } else { *buf_out = hb_buffer_eof_init(); return HB_WORK_DONE; } }