void BitStreamFilterTest::testMakeByName () { const char* name = "noise"; RefPointer<BitStreamFilter> f = BitStreamFilter::make(name); TS_ASSERT(strcmp(name, f->getName())==0); RefPointer<BitStreamFilterType> t = f->getType(); TS_ASSERT(strcmp(name, t->getName())==0); }
void MuxerFormatTest::testCreateMuxerFormat() { RefPointer<MuxerFormat> format; format = MuxerFormat::guessFormat("flv", 0, 0); VS_LOG_DEBUG("Pointer: %p", format.value()); VS_LOG_DEBUG("Name: %s", format->getName()); VS_LOG_DEBUG("Long Name: %s", format->getLongName()); VS_LOG_DEBUG("Extensions: %s", format->getExtensions()); VS_LOG_DEBUG("MimeType: %s", format->getMimeType()); int32_t n = format->getNumSupportedCodecs(); VS_LOG_DEBUG("# Supported Codecs: %d", n); for(int32_t i = 0; i < n; i++) { Codec::ID id = format->getSupportedCodecId(i); RefPointer<CodecDescriptor> d = CodecDescriptor::make(id); VS_LOG_DEBUG(" ID: %d, Tag: %d", id, format->getSupportedCodecTag(i)); VS_LOG_DEBUG(" Name: %s", d->getName()); VS_LOG_DEBUG(" Type: %d", d->getType()); VS_LOG_DEBUG(" Long Name: %s", d->getLongName()); VS_LOG_DEBUG(" Properties: %d", d->getProperties()); } TSM_ASSERT("", strcmp("flv", format->getName()) == 0); format = MuxerFormat::guessFormat(0, "foo.flv", 0); TSM_ASSERT("", strcmp("flv", format->getName()) == 0); format = MuxerFormat::guessFormat(0, 0, "video/x-flv"); TSM_ASSERT("", strcmp("flv", format->getName()) == 0); /** make sure default codec stuff works */ format = MuxerFormat::guessFormat("mp4", 0, 0); TSM_ASSERT("", format); Codec::ID id = Codec::CODEC_ID_NONE; id = format->getDefaultAudioCodecId(); TSM_ASSERT_EQUALS("", id, Codec::CODEC_ID_AAC); id = format->getDefaultVideoCodecId(); TSM_ASSERT_EQUALS("", id, Codec::CODEC_ID_H264); id = format->getDefaultSubtitleCodecId(); TSM_ASSERT_EQUALS("", id, Codec::CODEC_ID_NONE); id = format->guessCodec("mp4", 0, 0, MediaDescriptor::MEDIA_AUDIO); TSM_ASSERT_EQUALS("", id, Codec::CODEC_ID_AAC); id = format->guessCodec("mp4", 0, 0, MediaDescriptor::MEDIA_VIDEO); TSM_ASSERT_EQUALS("", id, Codec::CODEC_ID_H264); id = format->guessCodec("mp4", 0, 0, MediaDescriptor::MEDIA_SUBTITLE); TSM_ASSERT_EQUALS("", id, Codec::CODEC_ID_NONE); }
int32_t Coder::getFrameSize() { int32_t retval = (int32_t) getPropertyAsLong("frame_size"); if (retval < 0) return retval; RefPointer<Codec> codec = getCodec(); if (codec->getType() == MediaDescriptor::MEDIA_AUDIO) { if (retval <= 1) { // Rats; some PCM encoders give a frame size of 1, which is too //small. We pick a more sensible value. retval = 576; } } return retval; }
void DemuxerFormatTest::testCreateDemuxerFormat() { RefPointer<DemuxerFormat> format; format = DemuxerFormat::findFormat("mp4"); VS_LOG_DEBUG("Pointer: %p", format.value()); VS_LOG_DEBUG("Name: %s", format->getName()); VS_LOG_DEBUG("Long Name: %s", format->getLongName()); VS_LOG_DEBUG("Extensions: %s", format->getExtensions()); int32_t n = format->getNumSupportedCodecs(); VS_LOG_DEBUG("# Supported Codecs: %d", n); for(int32_t i = 0; i < n; i++) { Codec::ID id = format->getSupportedCodecId(i); RefPointer<CodecDescriptor> d = CodecDescriptor::make(id); VS_LOG_DEBUG(" ID: %d, Tag: %d", id, format->getSupportedCodecTag(i)); VS_LOG_DEBUG(" Name: %s", d->getName()); VS_LOG_DEBUG(" Type: %d", d->getType()); VS_LOG_DEBUG(" Long Name: %s", d->getLongName()); VS_LOG_DEBUG(" Properties: %d", d->getProperties()); } TSM_ASSERT("", strcmp("mov,mp4,m4a,3gp,3g2,mj2", format->getName()) == 0); }
void StreamCoderTest :: testGetters() { int refcount=0; h->setupReading(h->SAMPLE_FILE); for(int i = 0; i< h->num_streams; i++) { RefPointer<IStream> stream; RefPointer<ICodec> codec; RefPointer<IRational> rational; stream = h->streams[i]; coder = h->coders[i]; VS_TUT_ENSURE_EQUALS("invalid direction", coder->getDirection(), IStreamCoder::DECODING); codec = coder->getCodec(); refcount = codec->getCurrentRefCount(); { LoggerStack stack; stack.setGlobalLevel(Logger::LEVEL_ERROR, false); coder->setCodec(codec.value()); } // ensure that one release and one acquire happens VS_TUT_ENSURE_EQUALS("invalid releasing or acquiring of codec", codec->getCurrentRefCount(), refcount); VS_TUT_ENSURE_EQUALS("wrong codec type", codec->getType(), h->expected_codec_types[i]); VS_TUT_ENSURE_EQUALS("wrong codec id", codec->getID(), h->expected_codec_ids[i]); if (codec->getType() == ICodec::CODEC_TYPE_AUDIO) { if (h->expected_sample_rate) VS_TUT_ENSURE_EQUALS("unexpected sample rate", coder->getSampleRate(), h->expected_sample_rate ); if (h->expected_channels) VS_TUT_ENSURE_EQUALS("unexpected sample rate", coder->getChannels(), h->expected_channels ); } else if (codec->getType() == ICodec::CODEC_TYPE_VIDEO) { if (h->expected_width) VS_TUT_ENSURE_EQUALS("unexpected width", coder->getWidth(), h->expected_width ); if (h->expected_height) VS_TUT_ENSURE_EQUALS("unexpected height", coder->getHeight(), h->expected_height ); if (h->expected_gops) VS_TUT_ENSURE_EQUALS("unexpected group of pictures", coder->getNumPicturesInGroupOfPictures(), h->expected_gops ); if (h->expected_pixel_format != IPixelFormat::NONE) VS_TUT_ENSURE_EQUALS("unexpected group of pictures", coder->getPixelType(), h->expected_pixel_format ); if (h->expected_time_base) { rational = coder->getTimeBase(); VS_TUT_ENSURE_DISTANCE("unexpected time base", rational->getDouble(), h->expected_time_base, 0.0001 ); rational = stream->getTimeBase(); VS_TUT_ENSURE_DISTANCE("unexpected time base", rational->getDouble(), h->expected_time_base, 0.0001 ); } } else { VS_LOG_ERROR("Unexpected type of codec"); TS_ASSERT(false); } } }