Files
2026-08-24 10:03:24 +08:00

84 lines
2.8 KiB
C++

/*
* Copyright (C) 2014-2019 Amlogic, Inc. All rights reserved.
*
* All information contained herein is Amlogic confidential.
*
* This software is provided to you pursuant to Software License Agreement
* (SLA) with Amlogic Inc ("Amlogic"). This software may be used
* only in accordance with the terms of this agreement.
*
* Redistribution and use in source and binary forms, with or without
* modification is strictly prohibited without prior written permission from
* Amlogic.
*
* 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.
*/
#ifndef _EXT_PARSER_UTILS_H_
#define _EXT_PARSER_UTILS_H_
#include <fcntl.h>
#include <malloc.h>
#include <unistd.h>
#include <string>
#include "DataSource.h"
#include "list.h"
#define MALLOC(s) malloc(s)
#define FREE(d) free(d)
#define MEMCPY(d, s, l) memcpy(d, s, l)
#define MEMSET(d, s, l) memset(d, s, l)
#define MIN(x, y) ((x) < (y) ? (x) : (y))
#define UTF8 unsigned char
#define UTF16 unsigned short
#define UTF32 unsigned int
#define ERR ((void *)-1)
#define LINE_LEN 1024 * 5
enum {
AML_ENCODING_NONE = 0,
AML_ENCODING_UTF8,
AML_ENCODING_UTF16,
AML_ENCODING_UTF16BE,
AML_ENCODING_UTF32,
AML_ENCODING_UTF32BE
};
class ExtParserUtils {
public:
ExtParserUtils(int charset, std::shared_ptr<DataSource> source);
~ExtParserUtils();
int Ext_Subtitle_uni_Utf16toUtf8(int subformat, const UTF16 *in, int inLen, UTF8 *out,
int outMax);
int Ext_subtitle_utf16_utf8(int subformat, char *s, int inLen);
int ExtSubtitleEol(char p);
char *ExtSubtiltleReadtext(char *source, char **dest);
char *ExtSubtitleStrdup(char *src);
char *ExtSubtitleStristr(const char *haystack, const char *needle);
void ExtSubtitleTrailspace(char *s);
char *ExtSubtitlesfileGets(char *s /*, int fd*/);
private:
void detectEncoding();
char *subfile_buffer;
int mBufferSize;
unsigned mFileReaded;
std::shared_ptr<DataSource> mDataSource;
int mEncoding;
};
#endif