Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • a2011a089e6d5fd7823b3e81eecfcff4a2b104e7
  • master par défaut
  • 1-baka-export
  • meson
  • assdraw
  • old-master
  • v3.2.2
  • v3.2.1
  • v3.2.0
  • v3.1.3
  • v3.1.2
  • v3.1.1
  • v3.1.0
  • v3.0.4
  • v3.0.3
  • v3.0.2
  • v3.0.1
  • v3.0.0
  • v2.1.3
  • v2.1.4
  • v2.1.5
  • v2.1.6
  • v2.1.0
  • v2.1.1
  • v2.1.2
  • v2.1.7
26 résultats

mkv_wrap.cpp

Blame
  • mkv_wrap.cpp 10,30 Kio
    // Copyright (c) 2004-2006, Rodrigo Braz Monteiro, Mike Matsnev
    // All rights reserved.
    //
    // Redistribution and use in source and binary forms, with or without
    // modification, are permitted provided that the following conditions are met:
    //
    //   * Redistributions of source code must retain the above copyright notice,
    //     this list of conditions and the following disclaimer.
    //   * Redistributions in binary form must reproduce the above copyright notice,
    //     this list of conditions and the following disclaimer in the documentation
    //     and/or other materials provided with the distribution.
    //   * Neither the name of the Aegisub Group nor the names of its contributors
    //     may be used to endorse or promote products derived from this software
    //     without specific prior written permission.
    //
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    // POSSIBILITY OF SUCH DAMAGE.
    //
    // Aegisub Project http://www.aegisub.org/
    
    /// @file mkv_wrap.cpp
    /// @brief High-level interface for obtaining various data from Matroska files
    /// @ingroup video_input
    ///
    
    #include "mkv_wrap.h"
    
    #include "ass_file.h"
    #include "ass_parser.h"
    #include "compat.h"
    #include "dialog_progress.h"
    #include "MatroskaParser.h"
    #include "options.h"
    
    #include <libaegisub/ass/time.h>
    #include <libaegisub/file_mapping.h>
    #include <libaegisub/format.h>
    #include <libaegisub/scoped_ptr.h>
    
    #include <algorithm>
    #include <boost/algorithm/string/replace.hpp>
    #include <boost/lexical_cast.hpp>
    #include <boost/range/irange.hpp>
    #include <boost/tokenizer.hpp>
    #include <iterator>
    
    #include <wx/choicdlg.h> // Keep this last so wxUSE_CHOICEDLG is set.
    
    struct MkvStdIO final : InputStream {
        agi::read_file_mapping file;
        std::string error;
    
        static int Read(InputStream *st, uint64_t pos, void *buffer, int count) {
            auto *self = static_cast<MkvStdIO *>(st);
            if (pos >= self->file.size())
                return 0;
    
            auto remaining = self->file.size() - pos;
            if (remaining < INT_MAX)
                count = std::min(static_cast<int>(remaining), count);