static int do_show_osd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { struct udevice *osd; if (argc == 1) { /* show all OSDs */ struct uclass *uc; int res; res = uclass_get(UCLASS_VIDEO_OSD, &uc); if (res) { printf("Error while getting OSD uclass (err=%d)\n", res); return CMD_RET_FAILURE; } uclass_foreach_dev(osd, uc) show_osd(osd); } else { int i, res; /* show specific OSD */ i = simple_strtoul(argv[1], NULL, 10); res = uclass_get_device_by_seq(UCLASS_VIDEO_OSD, i, &osd); if (res) { printf("Invalid osd %d: err=%d\n", i, res); return CMD_RET_FAILURE; } show_osd(osd); } return CMD_RET_SUCCESS; }
int main() { char tmp[5]; show_osd(1023, 2503, "Test Title(2014)"); gets(tmp); hide_osd(); return 0; };
framepos_t AviLayer::setpos(framepos_t step) { framepos_t res = 0; // lock_feed(); res = _stream->SeekToKeyFrame(step); // unlock_feed(); // notice("avi seek to %u\% (K%u)", // (res*100)/_stream->GetLength(),res); show_osd(); avi_dirty = true; return(res); }
static void dbus_show_osd_handler(struct con_win *cwin) { show_osd(cwin); }
bool AviLayer::keypress(int key) { bool res = true; framepos_t off; switch(key) { case 'k': off = forward(1); show_osd("AviLayer seek forward to %u\% (K%u)", (off*100)/_stream->GetLength(),off); break; case 'j': off = rewind(1); show_osd("AviLayer rewind to %u\% (K%u)", (off*100)/_stream->GetLength(),off); break; /* Hi Jaromil, I have been thinking about the looping problem, my feeling now is that it does not comply with a natural usage. My advise is: If you you click the IN-point, the OUT-point is cleared by default If you then click the OUT-point, the clip starts looping If you re-click the OUT point, the clip loops between the previous IN-point and the new OUT-point In this case, people wont get confused. Cheers, Robert That's ok, i make an addition to this: if you re-click the OUT point, the OUT point gets deleted at the next click, you mark another OUT point (this way you can mark a new OUT position after the current one) -jrml */ case 'i': if(marker_in) { marker_in = 0; marker_out = 0; } else { mark_in_now(); // mark_in = _stream->GetPos(); marker_out = 0; } act("AviLayer::mark IN[%u] - OUT[%u] (%s)", marker_in, marker_out, (marker_in)?"ON":"OFF"); show_osd(); break; case 'o': if(marker_out) { // there is allready a markout marker_out = 0; } else mark_out_now(); // mark_out = _stream->GetPos(); act("AviLayer::mark IN[%u] - OUT[%u] (%s)", marker_in, marker_out, (marker_in&&marker_out)?"ON":"OFF"); show_osd(); break; case 'l': marker_in = 0; marker_out = 0; act("AviLayer::marks removed IN[0] - OUT[0]"); show_osd(); break; /* case 'n': set_play_speed(-1); break; case 'm': set_play_speed(+1); break; case 'v': set_slow_frame(-1); break; case 'b': set_slow_frame(+1); break; */ case 'p': pause(); break; default: res = false; break; } return res; }
void AviLayer::set_slow_frame(int speed) { slow_frame += speed; show_osd("AviLayer::frame rate is now %i", slow_frame); }
void AviLayer::set_play_speed(int speed) { play_speed += speed; show_osd("AviLayer::play speed is now %i", play_speed); }
void AviLayer::pause() { paused = !paused; notice("avi pause : %s",(paused)?"on":"off"); show_osd(); }