CCExtractor / CCExtractor/ccextractor

Refactor: Move demuxer-related options from global ccx_options to ccx_demuxer struct

オープン
#2,101 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
C
スター
903
フォーク
589
平均マージ
3日 2時間
マージ済み PR(30日)
10

説明

## Problem

Several functions in `src/lib_ccx/file_functions.c` rely on the global `ccx_options` struct for configuration values, specifically:

- `ccx_options.live_stream`
- `ccx_options.buffer_input`
- `ccx_options.input_source`
- `ccx_options.binary_concat`

This creates tight coupling between the demuxer logic and global application state.

## Current Behavior

Functions such as:

- `buffered_read_opt()`
- `switch_to_next_file()`
- `ccx_demuxer_open()`
- `ccx_demuxer_close()`

directly access the global `ccx_options` struct instead of receiving configuration through the demuxer context.

## Why This Is Problematic

- **Testability** — Functions relying on globals are difficult to unit test in isolation.
- **Encapsulation** — The demuxer's behavior depends on external state it does not own.
- **Thread safety** — Global state increases the risk of race conditions in multi-threaded scenarios.
- **Library reuse** — Tight coupling makes `lib_ccx` harder to use as a standalone library.

## Proposed Solution

- Add `live_stream`, `buffer_input`, `input_source`, and `binary_concat` fields to `struct ccx_demuxer`.
- Initialize these fields from `ccx_options` during demuxer initialization (e.g., in `init_demuxer()`).
- Update affected functions to read configuration from the demuxer context (`ctx->`) instead of the global `ccx_options`.

## Affected Files

- `src/lib_ccx/ccx_demuxer.h`
- `src/lib_ccx/ccx_demuxer.c`
- `src/lib_ccx/file_functions.c`

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。