Lines Matching refs:page

166 /* Draw a page as text */
167 static int gen_sub_text(TeletextContext *ctx, AVSubtitleRect *sub_rect, vbi_page *page, int chop_top)
177 sz = vbi_print_page_region(page, vbi_text, TEXT_MAXSZ-1, "UTF-8",
180 page->columns, page->rows-chop_top);
234 static void bprint_color(const char *type, AVBPrint *buf, vbi_page *page, unsigned ci)
236 int r = VBI_R(page->color_map[ci]);
237 int g = VBI_G(page->color_map[ci]);
238 int b = VBI_B(page->color_map[ci]);
245 static void get_trim_info(vbi_page *page, vbi_char *row, int *leading, int *trailing, int *olen)
252 for (i = 0; i < page->columns; i++) {
262 *trailing = len > 0 ? page->columns - *leading - len : page->columns;
265 static void decode_string(vbi_page *page, vbi_char *row, AVBPrint *buf,
274 bprint_color("c", buf, page, row[i].foreground);
278 bprint_color("3c", buf, page, row[i].background);
294 /* Draw a page as ass formatted text */
295 static int gen_sub_ass(TeletextContext *ctx, AVSubtitleRect *sub_rect, vbi_page *page, int chop_top)
300 int min_trailing = page->columns, min_leading = page->columns;
304 int is_subtitle_page = ctx->subtitle_map[page->pgno & 0x7ff];
312 for (i = chop_top; i < page->rows; i++) {
313 vbi_char *row = page->text + i * page->columns;
315 get_trim_info(page, row, &leading, &trailing, &len);
344 for (i = chop_top; i < page->rows; i++) {
346 vbi_char *row = page->text + i * page->columns;
349 for (j = 0; j < page->columns; j++)
352 is_transparent_line = (j == page->columns);
354 len = is_transparent_line ? 0 : page->columns;
355 leading = trailing = is_transparent_line ? page->columns : 0;
359 get_trim_info(page, row, &leading, &trailing, &len);
379 decode_string(page, row, &buf, leading, page->columns - trailing, &cur_color, &cur_back_color);
412 static void fix_transparency(TeletextContext *ctx, AVSubtitleRect *sub_rect, vbi_page *page,
420 vbi_char *vc = page->text + (iy / BITMAP_CHAR_HEIGHT + chop_top) * page->columns;
421 vbi_char *vcnext = vc + page->columns;
450 /* Draw a page as bitmap */
451 static int gen_sub_bitmap(TeletextContext *ctx, AVSubtitleRect *sub_rect, vbi_page *page, int chop_top)
453 int resx = page->columns * BITMAP_CHAR_WIDTH;
454 int resy = (page->rows - chop_top) * BITMAP_CHAR_HEIGHT;
456 vbi_char *vc = page->text + (chop_top * page->columns);
457 vbi_char *vcend = page->text + (page->rows * page->columns);
465 av_log(ctx, AV_LOG_DEBUG, "dropping empty page %3x\n", page->pgno);
475 vbi_draw_vt_page_region(page, VBI_PIXFMT_PAL8,
477 0, chop_top, page->columns, page->rows - chop_top,
480 fix_transparency(ctx, sub_rect, page, chop_top, resx, resy);
494 r = VBI_R(page->color_map[ci]);
495 g = VBI_G(page->color_map[ci]);
496 b = VBI_B(page->color_map[ci]);
497 a = VBI_A(page->color_map[ci]);
512 vbi_page page;
519 av_log(ctx, AV_LOG_DEBUG, "decoded page %s.%02x\n",
527 res = vbi_fetch_vt_page(ctx->vbi, &page,
535 chop_top = ctx->chop_top || ((page.rows > 1) && is_subtitle_page);
537 av_log(ctx, AV_LOG_DEBUG, "%d x %d page chop:%d\n",
538 page.columns, page.rows, chop_top);
551 res = gen_sub_bitmap(ctx, cur_page->sub_rect, &page, chop_top);
554 res = gen_sub_text(ctx, cur_page->sub_rect, &page, chop_top);
557 res = gen_sub_ass(ctx, cur_page->sub_rect, &page, chop_top);
576 //TODO: If multiple packets contain more than one page, pages may got queued up, and this may happen...
577 av_log(ctx, AV_LOG_ERROR, "Buffered too many pages, dropping page %s.\n", pgno_str);
581 vbi_unref_page(&page);
604 /* Unfortunately libzvbi does not expose page flags, and
606 * decode the page flags and store the results. */
609 int page = vbi_unham16p(p + 2);
612 if (page >= 0 && flags1 >= 0 && flags2 >= 0) {
613 int pgno = ((pmag & 7) << 8) + page;
616 // Propagate ERASE_PAGE flag for repeated page headers to work around a libzvbi bug
750 av_log(avctx, AV_LOG_VERBOSE, "page filter: %s\n", ctx->pgno);
791 {"txt_page", "page numbers to decode, subtitle for subtitles, * for all", OFFSET(pgno), AV_OPT_TYPE_STRING, {.str = "*"}, 0, 0, SD},