int Private_Impl_Still::createEncoder() { if ( mmal_component_create ( MMAL_COMPONENT_DEFAULT_IMAGE_ENCODER, &encoder ) ) { cout << API_NAME << ": Could not create encoder component.\n"; destroyEncoder(); return -1; } if ( !encoder->input_num || !encoder->output_num ) { cout << API_NAME << ": Encoder does not have input/output ports.\n"; destroyEncoder(); return -1; } encoder_input_port = encoder->input[0]; encoder_output_port = encoder->output[0]; mmal_format_copy ( encoder_output_port->format, encoder_input_port->format ); encoder_output_port->format->encoding = convertEncoding ( encoding ); // Set output encoding encoder_output_port->buffer_size = encoder_output_port->buffer_size_recommended; if ( encoder_output_port->buffer_size < encoder_output_port->buffer_size_min ) encoder_output_port->buffer_size = encoder_output_port->buffer_size_min; encoder_output_port->buffer_num = encoder_output_port->buffer_num_recommended; if ( encoder_output_port->buffer_num < encoder_output_port->buffer_num_min ) encoder_output_port->buffer_num = encoder_output_port->buffer_num_min; if ( mmal_port_format_commit ( encoder_output_port ) ) { cout << API_NAME << ": Could not set format on encoder output port.\n"; destroyEncoder(); return -1; } if ( mmal_component_enable ( encoder ) ) { cout << API_NAME << ": Could not enable encoder component.\n"; destroyEncoder(); return -1; } if ( ! ( encoder_pool = mmal_port_pool_create ( encoder_output_port, encoder_output_port->buffer_num, encoder_output_port->buffer_size ) ) ) { cout << API_NAME << ": Failed to create buffer header pool for encoder output port.\n"; destroyEncoder(); return -1; } return 0; }
void tearDown() { if (expectClean) { EncoderError err = getEncoderError(encoder); TEST_ASSERT_EQUAL(0, err.errorMask); TEST_ASSERT_EQUAL(0, err.errors); } encoder = destroyEncoder(encoder); TEST_ASSERT_FALSE(IsValid(encoder)); TEST_ASSERT_EQUAL(PinNoOccupation, pinOccupation(testPin1)); TEST_ASSERT_EQUAL(PinNoOccupation, pinOccupation(testPin2)); TEST_ASSERT_EQUAL(0, countEncoders()); destroy_fake_port(); tearDownPinChangeInterrupts(); }
void test_two_encoders() { Encoder encoder2 = newEncoder(0, 2, 3, testPin3, testPin4, 0); TEST_ASSERT(encoderValid(encoder2)); TEST_ASSERT_EQUAL(0, encoderState(encoder)); TEST_ASSERT_EQUAL(0, encoderState(encoder2)); trigger(TRUE); trigger(TRUE); TEST_ASSERT_EQUAL(2*4, encoderState(encoder)); TEST_ASSERT_EQUAL(0, encoderState(encoder2)); invokePinChangeInterrupt(0, _BV(2)); invokePinChangeInterrupt(0, _BV(2) | _BV(3)); invokePinChangeInterrupt(0, _BV(3)); invokePinChangeInterrupt(0, 0); TEST_ASSERT_EQUAL(2*4, encoderState(encoder)); TEST_ASSERT_EQUAL(1*4, encoderState(encoder2)); encoder2 = destroyEncoder(encoder2); TEST_ASSERT_FALSE(IsValid(encoder2)); }
void SpeexPlugin::endSession() { disablePreprocessing(); destroyEncoder(); destroyDecoder(); }
SpeexPlugin::~SpeexPlugin() { if (encoder) destroyEncoder(); if (decoder) destroyDecoder(); }