Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/VLC/modules/gui/qt/medialibrary/   (VLC Media Plyer ©)  Datei vom 23.9.2026 mit Größe 5 kB image not shown  

Quelle  mlvideo.cpp   Sprache: C

 

/*****************************************************************************
 * Copyright (C) 2019 VLC authors and VideoLAN
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * ( at your option ) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
 *****************************************************************************/


#include "mlvideo.hpp"

#include <cassert>

#include "mlhelper.hpp"
#include "util/vlctick.hpp"

VideoDescription::VideoDescription(const QString &codec, const QString &language, const unsigned int fps)
    : m_codec(codec)
    , m_language(language)
    , m_fps(fps)
{
}

QString VideoDescription::getCodec() const
{
    return m_codec;
}

QString VideoDescription::getLanguage() const
{
    return m_language;
}

unsigned int VideoDescription::getFps() const
{
    return m_fps;
}

AudioDescription::AudioDescription(const QString &codec, const QString &language, const unsigned int nbChannels, const unsigned int sampleRate)
    : m_codec(codec)
    , m_language(language)
    , m_nbchannels(nbChannels)
    , m_sampleRate(sampleRate)
{
}

QString AudioDescription::getCodec() const
{
    return m_codec;
}

QString AudioDescription::getLanguage() const
{
    return m_language;
}

unsigned int AudioDescription::getNbChannels() const
{
    return m_nbchannels;
}

unsigned int AudioDescription::getSampleRate() const
{
    return m_sampleRate;
}

MLVideo::MLVideo(const vlc_ml_media_t* data)
    : MLMedia ( data )
{
    assert( data->i_type == VLC_ML_MEDIA_TYPE_VIDEO || data->i_type == VLC_ML_MEDIA_TYPE_UNKNOWN );

    m_isNew = (m_playCount == 0 && m_progress <= 0);

    unsigned int numChannel = 0 , maxWidth = 0 , maxHeight = 0;
    for( const vlc_ml_media_track_t& track: ml_range_iterate<vlc_ml_media_track_t>( data->p_tracks ) ) {
        if ( track.i_type == VLC_ML_TRACK_TYPE_AUDIO ) {
            numChannel = std::max( numChannel , track.a.i_nbChannels );

            m_audioDesc.push_back( { qfu( track.psz_codec ) ,
                                     qfu( track.psz_language  ) ,
                                     track.a.i_nbChannels ,
                                     track.a.i_sampleRate }
                                 );
        }
        else if ( track.i_type == VLC_ML_TRACK_TYPE_VIDEO ){
            maxWidth = std::max( maxWidth, track.v.i_width );
            maxHeight = std::max( maxHeight, track.v.i_height );

            m_videoDesc.push_back( { qfu( track.psz_codec ) ,
                                     qfu( track.psz_language ) ,
                                     track.v.i_fpsNum }
                                 );
        } else if ( track.i_type == VLC_ML_TRACK_TYPE_SUBTITLE )
        {
            m_subtitleDesc.emplaceBack( qfu(track.psz_codec)
                                        , qfu(track.psz_language)
                                        , qfu(track.psz_description)
                                        , qfu(track.s.psz_encoding)
                                    );
        }
    }

    m_channel = channelNameFromNbChannels(numChannel);
    m_resolution = resolutionNameFromSize(maxWidth, maxHeight);
}

bool MLVideo::isNew() const
{
    return m_isNew;
}

void MLVideo::setIsNew(bool isNew)
{
    m_isNew = isNew;
}

void MLVideo::setSmallCover(vlc_ml_thumbnail_status_t status, QString mrl)
{
    m_smallThumbnail = {std::move(mrl), status};
}

QString MLVideo::getDisplayMRL() const
{
    return m_mrl.toString(QUrl::PrettyDecoded | QUrl::RemoveUserInfo | QUrl::PreferLocalFile | QUrl::NormalizePathSegments);
}

QString MLVideo::getResolutionName() const
{
    return m_resolution;
}
QString MLVideo::getChannel() const
{
    return m_channel;
}

QList<VideoDescription> MLVideo::getVideoDesc() const
{
    return m_videoDesc;
}

QList<SubtitleDescription> MLVideo::getSubtitleDesc() const
{
    return m_subtitleDesc;
}

QList<AudioDescription> MLVideo::getAudioDesc() const
{
    return m_audioDesc;
}

SubtitleDescription::SubtitleDescription(const QString &codec, const QString &language
                                         , const QString &description, const QString &encoding)
    : m_codec {codec}
    , m_language {language}
    , m_description {description}
    , m_encoding {encoding}
{
}

QString SubtitleDescription::getCodec() const
{
    return m_codec;
}

QString SubtitleDescription::getLanguage() const
{
    return m_language;
}

QString SubtitleDescription::getDescription() const
{
    return m_description;
}

QString SubtitleDescription::getEncoding() const
{
    return m_encoding;
}

Messung
CHZG
80999692

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.