X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=bmusb.h;h=6fdddedeb6e1d5781d8a9128cf67b5525fd5ef33;hb=cd4dd0ed2eaf14fc50f0601295c821a41b603490;hp=5ce73ccc7e744d84f11ea31dcaab2fccc28195fa;hpb=c111b50bf5c9419e9d8abccf10f9e4066f9e6fa5;p=bmusb diff --git a/bmusb.h b/bmusb.h index 5ce73cc..6fddded 100644 --- a/bmusb.h +++ b/bmusb.h @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -104,6 +105,11 @@ class BMUSBCapture { has_dequeue_callbacks = true; } + // Only valid after configure_card(). + std::string get_description() const { + return description; + } + void configure_card(); void start_bm_capture(); void stop_dequeue_thread(); @@ -127,6 +133,8 @@ class BMUSBCapture { static void usb_thread_func(); static void cb_xfr(struct libusb_transfer *xfr); + std::string description; + FrameAllocator::Frame current_video_frame; FrameAllocator::Frame current_audio_frame; @@ -157,6 +165,11 @@ class BMUSBCapture { // Get details for the given video format; returns false if detection was incomplete. // Note: Frame rate is _frame_ rate, not field rate. So 1080i60 gets 30/1, _not_ 60/1. -bool decode_video_format(uint16_t video_format, int *width, int *height, int *frame_rate_nom, int *frame_rate_den, bool *interlaced); +// "second_field_start" is only valid for interlaced modes; it signifies +// how many lines from the very top of the frame there are before the second field +// starts (so it will always be >= height/2 + extra_lines_top). +bool decode_video_format(uint16_t video_format, unsigned *width, unsigned *height, unsigned *second_field_start, + unsigned *extra_lines_top, unsigned *extra_lines_bottom, + unsigned *frame_rate_nom, unsigned *frame_rate_den, bool *interlaced); #endif