static int activate(AVFilterContext *ctx) { AVFilterLink *inlink = ctx->inputs[0]; AVFilterLink *outlink = ctx->outputs[0]; AVFrame *in; int64_t pts; int ret, status; FF_FILTER_FORWARD_STATUS_BACK(outlink, inlink); ret = ff_inlink_consume_frame(inlink, &in); if (ret < 0) return ret; if (ret > 0) return filter_frame(inlink, in); if (ff_inlink_acknowledge_status(inlink, &status, &pts)) { if (status == AVERROR_EOF) { int64_t out_pts = pts; ret = flush_frame(outlink, pts, &out_pts); ff_outlink_set_status(outlink, status, out_pts); return ret; } } FF_FILTER_FORWARD_WANTED(outlink, inlink); return FFERROR_NOT_READY; }
void dirac::es_parser_c::handle_picture_unit(memory_cptr packet) { flush_frame(); if (!m_seqhdr_found) return; m_current_frame = frame_cptr(new frame_t); m_current_frame->data = packet; m_current_frame->data->grab(); }
void vc1::es_parser_c::flush() { if (m_unparsed_buffer && (4 <= m_unparsed_buffer->get_size())) { uint32_t marker = get_uint32_be(m_unparsed_buffer->get_buffer()); if (vc1::is_marker(marker)) handle_packet(memory_c::clone(m_unparsed_buffer->get_buffer(), m_unparsed_buffer->get_size())); } m_unparsed_buffer.reset(); flush_frame(); }
void dirac::es_parser_c::flush() { if (m_unparsed_buffer && (4 <= m_unparsed_buffer->get_size())) { uint32_t marker = get_uint32_be(m_unparsed_buffer->get_buffer()); if (DIRAC_SYNC_WORD == marker) handle_unit(memory_c::clone(m_unparsed_buffer->get_buffer(), m_unparsed_buffer->get_size())); } m_unparsed_buffer.reset(); flush_frame(); }
void spectrum_frame() { if (!temp.inputblock || input.keymode != K_INPUT::KM_DEFAULT) input.make_matrix(); init_snd_frame(); init_frame(); if(cpu.dbgchk) { cpu.SetDbgMemIf(); z80dbg::z80loop(); } else { cpu.SetFastMemIf(); z80fast::z80loop(); } if (modem.open_port) modem.io(); flush_snd_frame(); flush_frame(); showleds(); if (!cpu.iff1 || // int disabled in CPU ((conf.mem_model == MM_ATM710 || conf.mem_model == MM_ATM3) && !(comp.pFF77 & 0x20))) // int disabled by ATM hardware { unsigned char *mp = am_r(cpu.pc); if (cpu.halted) { strcpy(statusline, "CPU HALTED"); statcnt = 10; } if (*(unsigned short*)mp == WORD2(0x18,0xFE) || ((*mp == 0xC3) && *(unsigned short*)(mp+1) == (unsigned short)cpu.pc)) { strcpy(statusline, "CPU STOPPED"); statcnt = 10; } } comp.t_states += conf.frame; cpu.t -= conf.frame; cpu.eipos -= conf.frame; comp.frame_counter++; }
void vc1::es_parser_c::handle_sequence_header_packet(memory_cptr packet) { flush_frame(); add_pre_frame_extra_data(packet); vc1::sequence_header_t seqhdr; if (!vc1::parse_sequence_header(packet->get_buffer(), packet->get_size(), seqhdr)) return; m_seqhdr_changed = !m_seqhdr_found || (packet->get_size() != m_raw_seqhdr->get_size()) || memcmp(packet->get_buffer(), m_raw_seqhdr->get_buffer(), packet->get_size()); memcpy(&m_seqhdr, &seqhdr, sizeof(vc1::sequence_header_t)); m_raw_seqhdr = memory_cptr(packet->clone()); m_seqhdr_found = true; if (!m_default_duration_forced && m_seqhdr.framerate_flag && (0 != m_seqhdr.framerate_num) && (0 != m_seqhdr.framerate_den)) m_default_duration = 1000000000ll * m_seqhdr.framerate_num / m_seqhdr.framerate_den; }
void vc1::es_parser_c::handle_frame_packet(memory_cptr packet) { flush_frame(); vc1::frame_header_t frame_header; if (!m_seqhdr_found || !vc1::parse_frame_header(packet->get_buffer(), packet->get_size(), frame_header, m_seqhdr)) return; m_current_frame = frame_cptr(new frame_t); m_current_frame->data = packet; m_current_frame->data->grab(); memcpy(&m_current_frame->header, &frame_header, sizeof(frame_header_t)); if (!m_timecodes.empty()) mxverb(2, boost::format("vc1::es_parser_c::handle_frame_packet: next provided timecode %1% next calculated timecode %2%\n") % format_timecode(m_timecodes.front()) % format_timecode(peek_next_calculated_timecode())); }
void dirac::es_parser_c::handle_end_of_sequence_unit(memory_cptr packet) { add_post_frame_extra_data(packet); flush_frame(); }