From c3003b00fa5281e2905a9e2f204d7b31893d01fc Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Wed, 18 Nov 2015 01:08:51 +0100 Subject: [PATCH] Reduce the verbosity somewhat. --- bmusb | 2 +- h264encode.cpp | 90 +------------------------------------------------- mixer.cpp | 15 ++++----- 3 files changed, 9 insertions(+), 98 deletions(-) diff --git a/bmusb b/bmusb index cb414fa..8eb0e99 160000 --- a/bmusb +++ b/bmusb @@ -1 +1 @@ -Subproject commit cb414fadb0738aeab971cc9b83c322118015d00b +Subproject commit 8eb0e99394c2ffa361c9dd7eb22bc176e6e4c899 diff --git a/h264encode.cpp b/h264encode.cpp index 0946eb0..d263b3a 100644 --- a/h264encode.cpp +++ b/h264encode.cpp @@ -108,14 +108,11 @@ static int h264_packedheader = 0; /* support pack header? */ static int h264_maxref = (1<<16|1); static int h264_entropy_mode = 1; /* cabac */ -static char *coded_fn = NULL; - static int frame_width = 176; static int frame_height = 144; static int frame_width_mbaligned; static int frame_height_mbaligned; static unsigned int frame_bitrate = 0; -static unsigned int frame_slices = 1; static double frame_size = 0; static int initial_qp = 15; //static int initial_qp = 28; @@ -972,28 +969,23 @@ static int init_va(void) } else { switch (h264_profile) { case VAProfileH264Baseline: - printf("Use profile VAProfileH264Baseline\n"); ip_period = 1; constraint_set_flag |= (1 << 0); /* Annex A.2.1 */ h264_entropy_mode = 0; break; case VAProfileH264ConstrainedBaseline: - printf("Use profile VAProfileH264ConstrainedBaseline\n"); constraint_set_flag |= (1 << 0 | 1 << 1); /* Annex A.2.2 */ ip_period = 1; break; case VAProfileH264Main: - printf("Use profile VAProfileH264Main\n"); constraint_set_flag |= (1 << 1); /* Annex A.2.2 */ break; case VAProfileH264High: constraint_set_flag |= (1 << 3); /* Annex A.2.4 */ - printf("Use profile VAProfileH264High\n"); break; default: - printf("unknow profile. Set to Baseline"); h264_profile = VAProfileH264Baseline; ip_period = 1; constraint_set_flag |= (1 << 0); /* Annex A.2.1 */ @@ -1023,23 +1015,6 @@ static int init_va(void) if (attrib[VAConfigAttribRateControl].value != VA_ATTRIB_NOT_SUPPORTED) { int tmp = attrib[VAConfigAttribRateControl].value; - printf("Support rate control mode (0x%x):", tmp); - - if (tmp & VA_RC_NONE) - printf("NONE "); - if (tmp & VA_RC_CBR) - printf("CBR "); - if (tmp & VA_RC_VBR) - printf("VBR "); - if (tmp & VA_RC_VCM) - printf("VCM "); - if (tmp & VA_RC_CQP) - printf("CQP "); - if (tmp & VA_RC_VBR_CONSTRAINED) - printf("VBR_CONSTRAINED "); - - printf("\n"); - if (rc_mode == -1 || !(rc_mode & tmp)) { if (rc_mode != -1) { printf("Warning: Don't support the specified RateControl mode: %s!!!, switch to ", rc_to_string(rc_mode)); @@ -1051,8 +1026,6 @@ static int init_va(void) break; } } - - printf("RateControl mode: %s\n", rc_to_string(rc_mode)); } config_attrib[config_attrib_num].type = VAConfigAttribRateControl; @@ -1064,29 +1037,23 @@ static int init_va(void) if (attrib[VAConfigAttribEncPackedHeaders].value != VA_ATTRIB_NOT_SUPPORTED) { int tmp = attrib[VAConfigAttribEncPackedHeaders].value; - printf("Support VAConfigAttribEncPackedHeaders\n"); - h264_packedheader = 1; config_attrib[config_attrib_num].type = VAConfigAttribEncPackedHeaders; config_attrib[config_attrib_num].value = VA_ENC_PACKED_HEADER_NONE; if (tmp & VA_ENC_PACKED_HEADER_SEQUENCE) { - printf("Support packed sequence headers\n"); config_attrib[config_attrib_num].value |= VA_ENC_PACKED_HEADER_SEQUENCE; } if (tmp & VA_ENC_PACKED_HEADER_PICTURE) { - printf("Support packed picture headers\n"); config_attrib[config_attrib_num].value |= VA_ENC_PACKED_HEADER_PICTURE; } if (tmp & VA_ENC_PACKED_HEADER_SLICE) { - printf("Support packed slice headers\n"); config_attrib[config_attrib_num].value |= VA_ENC_PACKED_HEADER_SLICE; } if (tmp & VA_ENC_PACKED_HEADER_MISC) { - printf("Support packed misc headers\n"); config_attrib[config_attrib_num].value |= VA_ENC_PACKED_HEADER_MISC; } @@ -1095,19 +1062,6 @@ static int init_va(void) } if (attrib[VAConfigAttribEncInterlaced].value != VA_ATTRIB_NOT_SUPPORTED) { - int tmp = attrib[VAConfigAttribEncInterlaced].value; - - printf("Support VAConfigAttribEncInterlaced\n"); - - if (tmp & VA_ENC_INTERLACED_FRAME) - printf("support VA_ENC_INTERLACED_FRAME\n"); - if (tmp & VA_ENC_INTERLACED_FIELD) - printf("Support VA_ENC_INTERLACED_FIELD\n"); - if (tmp & VA_ENC_INTERLACED_MBAFF) - printf("Support VA_ENC_INTERLACED_MBAFF\n"); - if (tmp & VA_ENC_INTERLACED_PAFF) - printf("Support VA_ENC_INTERLACED_PAFF\n"); - config_attrib[config_attrib_num].type = VAConfigAttribEncInterlaced; config_attrib[config_attrib_num].value = VA_ENC_PACKED_HEADER_NONE; config_attrib_num++; @@ -1115,28 +1069,6 @@ static int init_va(void) if (attrib[VAConfigAttribEncMaxRefFrames].value != VA_ATTRIB_NOT_SUPPORTED) { h264_maxref = attrib[VAConfigAttribEncMaxRefFrames].value; - - printf("Support %d RefPicList0 and %d RefPicList1\n", - h264_maxref & 0xffff, (h264_maxref >> 16) & 0xffff ); - } - - if (attrib[VAConfigAttribEncMaxSlices].value != VA_ATTRIB_NOT_SUPPORTED) - printf("Support %d slices\n", attrib[VAConfigAttribEncMaxSlices].value); - - if (attrib[VAConfigAttribEncSliceStructure].value != VA_ATTRIB_NOT_SUPPORTED) { - int tmp = attrib[VAConfigAttribEncSliceStructure].value; - - printf("Support VAConfigAttribEncSliceStructure\n"); - - if (tmp & VA_ENC_SLICE_STRUCTURE_ARBITRARY_ROWS) - printf("Support VA_ENC_SLICE_STRUCTURE_ARBITRARY_ROWS\n"); - if (tmp & VA_ENC_SLICE_STRUCTURE_POWER_OF_TWO_ROWS) - printf("Support VA_ENC_SLICE_STRUCTURE_POWER_OF_TWO_ROWS\n"); - if (tmp & VA_ENC_SLICE_STRUCTURE_ARBITRARY_MACROBLOCKS) - printf("Support VA_ENC_SLICE_STRUCTURE_ARBITRARY_MACROBLOCKS\n"); - } - if (attrib[VAConfigAttribEncMacroblockInfo].value != VA_ATTRIB_NOT_SUPPORTED) { - printf("Support VAConfigAttribEncMacroblockInfo\n"); } free(entrypoints); @@ -1825,26 +1757,6 @@ static int deinit_va() } -static int print_input() -{ - printf("\n\nINPUT:Try to encode H264...\n"); - if (rc_mode != -1) - printf("INPUT: RateControl : %s\n", rc_to_string(rc_mode)); - printf("INPUT: Resolution : %dx%dframes\n", frame_width, frame_height); - printf("INPUT: Bitrate : %d\n", frame_bitrate); - printf("INPUT: Slieces : %d\n", frame_slices); - printf("INPUT: IntraPeriod : %d\n", intra_period); - printf("INPUT: IDRPeriod : %d\n", intra_idr_period); - printf("INPUT: IpPeriod : %d\n", ip_period); - printf("INPUT: Initial QP : %d\n", initial_qp); - printf("INPUT: Min QP : %d\n", minimal_qp); - printf("INPUT: Coded Clip : %s\n", coded_fn); - - printf("\n\n"); /* return back to startpoint */ - - return 0; -} - H264Encoder::H264Encoder(QSurface *surface, int width, int height, HTTPD *httpd) : current_storage_frame(0), surface(surface), httpd(httpd) { @@ -1868,7 +1780,7 @@ H264Encoder::H264Encoder(QSurface *surface, int width, int height, HTTPD *httpd) frame_bitrate = 15000000; // / 60; current_frame_encoding = 0; - print_input(); + //print_input(); init_va(); setup_encode(); diff --git a/mixer.cpp b/mixer.cpp index c2e5bfc..5fd5d1f 100644 --- a/mixer.cpp +++ b/mixer.cpp @@ -1,5 +1,3 @@ -#define EXTRAHEIGHT 30 - #undef Success #include "mixer.h" @@ -107,7 +105,7 @@ Mixer::Mixer(const QSurfaceFormat &format, unsigned num_cards) CaptureCard *card = &cards[card_index]; card->usb = new BMUSBCapture(card_index); card->usb->set_frame_callback(bind(&Mixer::bm_frame, this, card_index, _1, _2, _3, _4, _5, _6, _7)); - card->frame_allocator.reset(new PBOFrameAllocator(WIDTH * (HEIGHT+EXTRAHEIGHT) * 2 + 44 + 1, WIDTH, HEIGHT)); + card->frame_allocator.reset(new PBOFrameAllocator(8 << 20, WIDTH, HEIGHT)); // 8 MB. card->usb->set_video_frame_allocator(card->frame_allocator.get()); card->surface = create_surface(format); card->usb->set_dequeue_thread_callbacks( @@ -301,7 +299,9 @@ void Mixer::bm_frame(unsigned card_index, uint16_t timecode, if (card->should_quit) return; } - if (video_frame.len - video_offset != WIDTH * (HEIGHT+EXTRAHEIGHT) * 2) { + if (video_frame.len - video_offset == 0 || + video_frame.len - video_offset != size_t(width * (height + extra_lines_top + extra_lines_bottom) * 2) || + width != WIDTH || height != HEIGHT) { // TODO: Remove this once the rest of the infrastructure is in place. if (video_frame.len != 0) { printf("Card %d: Dropping video frame with wrong length (%ld)\n", card_index, video_frame.len - video_offset); @@ -335,18 +335,17 @@ void Mixer::bm_frame(unsigned card_index, uint16_t timecode, //check_error(); // Upload the textures. - size_t skipped_lines = 25; - size_t cbcr_width = WIDTH / 2; + size_t cbcr_width = width / 2; size_t cbcr_offset = video_offset / 2; size_t y_offset = video_frame.size / 2 + video_offset / 2; glBindTexture(GL_TEXTURE_2D, userdata->tex_cbcr); check_error(); - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, cbcr_width, HEIGHT, GL_RG, GL_UNSIGNED_BYTE, BUFFER_OFFSET(cbcr_offset + cbcr_width * skipped_lines * sizeof(uint16_t))); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, cbcr_width, height, GL_RG, GL_UNSIGNED_BYTE, BUFFER_OFFSET(cbcr_offset + cbcr_width * extra_lines_top * sizeof(uint16_t))); check_error(); glBindTexture(GL_TEXTURE_2D, userdata->tex_y); check_error(); - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, WIDTH, HEIGHT, GL_RED, GL_UNSIGNED_BYTE, BUFFER_OFFSET(y_offset + WIDTH * skipped_lines)); + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_RED, GL_UNSIGNED_BYTE, BUFFER_OFFSET(y_offset + width * extra_lines_top)); check_error(); glBindTexture(GL_TEXTURE_2D, 0); check_error(); -- 2.39.2