WO2025239503A1 - 비디오 콘텐트를 재생하기 위한 전자 장치, 방법, 및 비일시적 컴퓨터 판독가능 저장매체 - Google Patents

비디오 콘텐트를 재생하기 위한 전자 장치, 방법, 및 비일시적 컴퓨터 판독가능 저장매체

Info

Publication number
WO2025239503A1
WO2025239503A1 PCT/KR2025/001723 KR2025001723W WO2025239503A1 WO 2025239503 A1 WO2025239503 A1 WO 2025239503A1 KR 2025001723 W KR2025001723 W KR 2025001723W WO 2025239503 A1 WO2025239503 A1 WO 2025239503A1
Authority
WO
WIPO (PCT)
Prior art keywords
frame
processor
frames
decoded
buffers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
PCT/KR2025/001723
Other languages
English (en)
French (fr)
Inventor
허진
박혜정
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020240078769A external-priority patent/KR20250165163A/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Priority to US19/062,577 priority Critical patent/US20250358431A1/en
Publication of WO2025239503A1 publication Critical patent/WO2025239503A1/ko
Pending legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments

Definitions

  • the following descriptions relate to electronic devices, methods, and non-transitory computer-readable storage media for playing video content.
  • An electronic device can play video content.
  • the electronic device can decode frames contained in the video content.
  • the video content can be played within a playback segment (or playback time segment).
  • the electronic device can provide a function for playing the video content from a designated point in time within the playback segment.
  • an electronic device may include at least one storage medium, a memory storing instructions, and at least one processor including a processing circuit.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to identify, based on a first seek request for video content, a first frame from among a plurality of frames for video content, the first frame corresponding to the first seek request.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to perform decoding from a reference frame included in the plurality of frames to the first frame.
  • the instructions, when individually or collectively executed by the at least one processor may cause the electronic device to store one or more decoded frames in the memory based on the decoding.
  • a method performed by an electronic device may include an operation of identifying, based on a first seek request for video content, a first frame for the first seek request from among a plurality of frames for the video content.
  • the method may include an operation of performing decoding from a reference frame included in the plurality of frames to the first frame.
  • the method may include an operation of storing, based on the decoding, one or more decoded frames in a memory of the electronic device.
  • a non-transitory computer-readable storage medium may store one or more programs.
  • the one or more programs may include instructions that, when executed by a processor of an electronic device having a memory, cause the processor to identify, based on a first seek request for video content, a first frame from among a plurality of frames for the video content, corresponding to the first seek request.
  • the one or more programs may include instructions that, when executed by the processor, cause the processor to perform decoding from a reference frame included in the plurality of frames to the first frame.
  • the one or more programs may include instructions that, when executed by the processor, cause the processor to store, based on the decoding, one or more decoded frames in the memory.
  • FIG. 1 is a block diagram of an electronic device within a network environment according to one embodiment.
  • Figure 2 illustrates an example of repeated decoding in an electronic device.
  • Figure 3a illustrates an example of a simplified block diagram of an electronic device.
  • FIG. 3b illustrates an example of layers configured in an electronic device for playing video content according to a search request.
  • Figure 4 illustrates a flowchart of the operation of an electronic device for outputting a frame according to a search request.
  • FIG. 5A illustrates a flowchart of operations of an electronic device for determining a method for storing one or more decoded frames.
  • Figure 5b illustrates an example of buffers set according to a method for storing one or more decoded frames.
  • Figure 6 illustrates an example of the operation of an electronic device according to a first search request.
  • Figure 7 illustrates an example of the operation of an electronic device according to a first search request.
  • Figure 8 illustrates an example of the operation of an electronic device according to a first search request and a second search request.
  • FIG. 9a illustrates an example of the operation of an electronic device according to a first search request and a second search request.
  • FIG. 9b illustrates an example of the operation of an electronic device according to a first search request and a second search request.
  • Figure 10 illustrates an example of the operation of an electronic device according to a first search request and a second search request.
  • FIG. 11a illustrates a flowchart of the operation of an electronic device when an error occurs in a specified number of buffers allocated for a search request.
  • Figure 11b illustrates an example where the number of buffers allocated for a search request is reduced.
  • Figure 12a illustrates examples of buffers allocated for search requests based on the second mode.
  • Figure 12b illustrates an example of additional buffers allocated for search requests based on the second mode.
  • Figure 13a illustrates an example of a user interface for a search request.
  • Figure 13b illustrates an example of a user interface for a search request.
  • Figure 13c illustrates an example of a user interface for a search request.
  • FIG. 1 is a block diagram of an electronic device within a network environment according to one embodiment.
  • an electronic device (101) may communicate with an electronic device (102) via a first network (198) (e.g., a short-range wireless communication network), or may communicate with at least one of an electronic device (104) or a server (108) via a second network (199) (e.g., a long-range wireless communication network).
  • the electronic device (101) may communicate with the electronic device (104) via the server (108).
  • the electronic device (101) may include a processor (120), a memory (130), an input module (150), an audio output module (155), a display module (160), an audio module (170), a sensor module (176), an interface (177), a connection terminal (178), a haptic module (179), a camera module (180), a power management module (188), a battery (189), a communication module (190), a subscriber identification module (196), or an antenna module (197).
  • the electronic device (101) may omit at least one of these components (e.g., the connection terminal (178)), or may have one or more other components added.
  • some of these components e.g., the sensor module (176), the camera module (180), or the antenna module (197) may be integrated into one component (e.g., the display module (160)).
  • the processor (120) may control at least one other component (e.g., a hardware or software component) of the electronic device (101) connected to the processor (120) by executing, for example, software (e.g., a program (140)), and may perform various data processing or calculations.
  • the processor (120) may store a command or data received from another component (e.g., a sensor module (176) or a communication module (190)) in a volatile memory (132), process the command or data stored in the volatile memory (132), and store the resulting data in a non-volatile memory (134).
  • the processor (120) may include a main processor (121) (e.g., a central processing unit or an application processor) or a secondary processor (123) (e.g., a graphics processing unit, a neural processing unit (NPU), an image signal processor, a sensor hub processor, or a communication processor) that can operate independently or together therewith.
  • a main processor (121) e.g., a central processing unit or an application processor
  • a secondary processor (123) e.g., a graphics processing unit, a neural processing unit (NPU), an image signal processor, a sensor hub processor, or a communication processor
  • the secondary processor (123) may be configured to use less power than the main processor (121) or to be specialized for a specified function.
  • the secondary processor (123) may be implemented separately from the main processor (121) or as a part thereof.
  • the auxiliary processor (123) may control at least a part of functions or states associated with at least one component (e.g., a display module (160), a sensor module (176), or a communication module (190)) of the electronic device (101), for example, on behalf of the main processor (121) while the main processor (121) is in an inactive (e.g., sleep) state, or together with the main processor (121) while the main processor (121) is in an active (e.g., application execution) state.
  • the auxiliary processor (123) e.g., an image signal processor or a communication processor
  • the auxiliary processor (123) may include a hardware structure specialized for processing artificial intelligence models.
  • the artificial intelligence models may be generated through machine learning. This learning can be performed, for example, in the electronic device (101) itself where the artificial intelligence model is executed, or can be performed through a separate server (e.g., server (108)).
  • the learning algorithm can include, for example, supervised learning, unsupervised learning, semi-supervised learning, or reinforcement learning, but is not limited to the examples described above.
  • the artificial intelligence model can include a plurality of artificial neural network layers.
  • the artificial neural network can be one of a deep neural network (DNN), a convolutional neural network (CNN), a recurrent neural network (RNN), a restricted Boltzmann machine (RBM), a deep belief network (DBN), a bidirectional recurrent deep neural network (BRDNN), deep Q-networks, or a combination of two or more of the above, but is not limited to the examples described above.
  • the artificial intelligence model can additionally or alternatively include a software structure.
  • the memory (130) can store various data used by at least one component (e.g., processor (120) or sensor module (176)) of the electronic device (101).
  • the data can include, for example, software (e.g., program (140)) and input data or output data for commands related thereto.
  • the memory (130) can include volatile memory (132) or non-volatile memory (134).
  • the program (140) may be stored as software in the memory (130) and may include, for example, an operating system (142), middleware (144), or an application (146).
  • the input module (150) can receive commands or data to be used in a component of the electronic device (101) (e.g., a processor (120)) from an external source (e.g., a user) of the electronic device (101).
  • the input module (150) can include, for example, a microphone, a mouse, a keyboard, a key (e.g., a button), or a digital pen (e.g., a stylus pen).
  • the audio output module (155) can output audio signals to the outside of the electronic device (101).
  • the audio output module (155) can include, for example, a speaker or a receiver.
  • the speaker can be used for general purposes, such as multimedia playback or recording playback.
  • the receiver can be used to receive incoming calls. According to one embodiment, the receiver can be implemented separately from the speaker or as part of the speaker.
  • the display module (160) can visually provide information to an external party (e.g., a user) of the electronic device (101).
  • the display module (160) may include, for example, a display, a holographic device, or a projector and a control circuit for controlling the device.
  • the display module (160) may include a touch sensor configured to detect a touch, or a pressure sensor configured to measure the intensity of a force generated by the touch.
  • the audio module (170) can convert sound into an electrical signal, or vice versa, convert an electrical signal into sound. According to one embodiment, the audio module (170) can acquire sound through the input module (150), output sound through the sound output module (155), or an external electronic device (e.g., electronic device (102)) (e.g., speaker or headphone) directly or wirelessly connected to the electronic device (101).
  • an external electronic device e.g., electronic device (102)
  • speaker or headphone directly or wirelessly connected to the electronic device (101).
  • the sensor module (176) can detect the operating status (e.g., power or temperature) of the electronic device (101) or the external environmental status (e.g., user status) and generate an electrical signal or data value corresponding to the detected status.
  • the sensor module (176) can include, for example, a gesture sensor, a gyro sensor, a barometric pressure sensor, a magnetic sensor, an acceleration sensor, a grip sensor, a proximity sensor, a color sensor, an IR (infrared) sensor, a biometric sensor, a temperature sensor, a humidity sensor, or an illuminance sensor.
  • the interface (177) may support one or more designated protocols that may be used to directly or wirelessly connect the electronic device (101) with an external electronic device (e.g., the electronic device (102)).
  • the interface (177) may include, for example, a high definition multimedia interface (HDMI), a universal serial bus (USB) interface, an SD card interface, or an audio interface.
  • HDMI high definition multimedia interface
  • USB universal serial bus
  • SD card interface Secure Digital Card
  • connection terminal (178) may include a connector through which the electronic device (101) may be physically connected to an external electronic device (e.g., electronic device (102)).
  • the connection terminal (178) may include, for example, an HDMI connector, a USB connector, an SD card connector, or an audio connector (e.g., a headphone connector).
  • a haptic module (179) can convert electrical signals into mechanical stimuli (e.g., vibration or movement) or electrical stimuli that a user can perceive through tactile or kinesthetic sensations.
  • the haptic module (179) can include, for example, a motor, a piezoelectric element, or an electrical stimulation device.
  • the camera module (180) can capture still images and videos.
  • the camera module (180) may include one or more lenses, image sensors, image signal processors, or flashes.
  • the power management module (188) can manage power supplied to the electronic device (101).
  • the power management module (188) can be implemented as, for example, at least a part of a power management integrated circuit (PMIC).
  • PMIC power management integrated circuit
  • a battery (189) may power at least one component of the electronic device (101).
  • the battery (189) may include, for example, a non-rechargeable primary battery, a rechargeable secondary battery, or a fuel cell.
  • the communication module (190) may support the establishment of a direct (e.g., wired) communication channel or a wireless communication channel between the electronic device (101) and an external electronic device (e.g., electronic device (102), electronic device (104), or server (108)), and the performance of communication through the established communication channel.
  • the communication module (190) may operate independently from the processor (120) (e.g., application processor) and may include one or more communication processors that support direct (e.g., wired) communication or wireless communication.
  • the communication module (190) may include a wireless communication module (192) (e.g., a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module) or a wired communication module (194) (e.g., a local area network (LAN) communication module, or a power line communication module).
  • a wireless communication module (192) e.g., a cellular communication module, a short-range wireless communication module, or a global navigation satellite system (GNSS) communication module
  • GNSS global navigation satellite system
  • wired communication module (194) e.g., a local area network (LAN) communication module, or a power line communication module.
  • the corresponding communication module can communicate with an external electronic device (104) via a first network (198) (e.g., a short-range communication network such as Bluetooth, wireless fidelity (WiFi) direct, or infrared data association (IrDA)) or a second network (199) (e.g., a long-range communication network such as a legacy cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (e.g., a LAN or WAN)).
  • a first network (198) e.g., a short-range communication network such as Bluetooth, wireless fidelity (WiFi) direct, or infrared data association (IrDA)
  • a second network (199) e.g., a long-range communication network such as a legacy cellular network, a 5G network, a next-generation communication network, the Internet, or a computer network (e.g., a LAN or WAN)
  • a computer network e.g., a
  • the wireless communication module (192) can verify or authenticate the electronic device (101) within a communication network such as the first network (198) or the second network (199) by using subscriber information (e.g., an international mobile subscriber identity (IMSI)) stored in the subscriber identification module (196).
  • subscriber information e.g., an international mobile subscriber identity (IMSI)
  • the wireless communication module (192) can support 5G networks and next-generation communication technologies following the 4G network, such as NR access technology (new radio access technology).
  • the NR access technology can support high-speed transmission of high-capacity data (eMBB (enhanced mobile broadband)), minimization of terminal power and connection of multiple terminals (mMTC (massive machine type communications)), or high reliability and low latency (URLLC (ultra-reliable and low-latency communications)).
  • eMBB enhanced mobile broadband
  • mMTC massive machine type communications
  • URLLC ultra-reliable and low-latency communications
  • the wireless communication module (192) can support, for example, a high-frequency band (e.g., mmWave band) to achieve a high data transmission rate.
  • a high-frequency band e.g., mmWave band
  • the wireless communication module (192) can support various technologies for securing performance in a high-frequency band, such as beamforming, massive multiple-input and multiple-output (MIMO), full dimensional MIMO (FD-MIMO), array antenna, analog beam-forming, or large scale antenna.
  • the wireless communication module (192) can support various requirements specified in the electronic device (101), an external electronic device (e.g., the electronic device (104)), or a network system (e.g., the second network (199)).
  • the wireless communication module (192) may support a peak data rate (e.g., 20 Gbps or more) for eMBB realization, a loss coverage (e.g., 164 dB or less) for mMTC realization, or a U-plane latency (e.g., 0.5 ms or less for downlink (DL) and uplink (UL), or 1 ms or less for round trip) for URLLC realization.
  • a peak data rate e.g., 20 Gbps or more
  • a loss coverage e.g., 164 dB or less
  • U-plane latency e.g., 0.5 ms or less for downlink (DL) and uplink (UL), or 1 ms or less for round trip
  • the antenna module (197) can transmit or receive signals or power to or from an external device (e.g., an external electronic device).
  • the antenna module (197) may include an antenna including a radiator formed of a conductor or a conductive pattern formed on a substrate (e.g., a PCB).
  • the antenna module (197) may include a plurality of antennas (e.g., an array antenna). In this case, at least one antenna suitable for a communication method used in a communication network, such as the first network (198) or the second network (199), may be selected from the plurality of antennas, for example, by the communication module (190). A signal or power may be transmitted or received between the communication module (190) and an external electronic device through the selected at least one antenna.
  • another component e.g., a radio frequency integrated circuit (RFIC)
  • RFIC radio frequency integrated circuit
  • the antenna module (197) may form a mmWave antenna module.
  • the mmWave antenna module may include a printed circuit board, an RFIC disposed on or adjacent a first side (e.g., a bottom side) of the printed circuit board and capable of supporting a designated high-frequency band (e.g., a mmWave band), and a plurality of antennas (e.g., an array antenna) disposed on or adjacent a second side (e.g., a top side or a side side) of the printed circuit board and capable of transmitting or receiving signals in the designated high-frequency band.
  • a first side e.g., a bottom side
  • a plurality of antennas e.g., an array antenna
  • At least some of the above components can be interconnected and exchange signals (e.g., commands or data) with each other via a communication method between peripheral devices (e.g., a bus, GPIO (general purpose input and output), SPI (serial peripheral interface), or MIPI (mobile industry processor interface)).
  • peripheral devices e.g., a bus, GPIO (general purpose input and output), SPI (serial peripheral interface), or MIPI (mobile industry processor interface)).
  • commands or data may be transmitted or received between the electronic device (101) and an external electronic device (104) via a server (108) connected to a second network (199).
  • Each of the external electronic devices (102 or 104) may be the same or a different type of device as the electronic device (101).
  • all or part of the operations executed in the electronic device (101) may be executed in one or more of the external electronic devices (102, 104, or 108). For example, when the electronic device (101) is to perform a certain function or service automatically or in response to a request from a user or another device, the electronic device (101) may, instead of or in addition to executing the function or service by itself, request one or more external electronic devices to perform the function or at least a part of the service.
  • One or more external electronic devices that receive the request may execute at least a portion of the requested function or service, or an additional function or service related to the request, and transmit the result of the execution to the electronic device (101).
  • the electronic device (101) may process the result as is or additionally and provide it as at least a portion of a response to the request.
  • cloud computing, distributed computing, mobile edge computing (MEC), or client-server computing technology may be used, for example.
  • the electronic device (101) may provide an ultra-low latency service by using distributed computing or mobile edge computing, for example.
  • the external electronic device (104) may include an Internet of Things (IoT) device.
  • the server (108) may be an intelligent server utilizing machine learning and/or a neural network.
  • the external electronic device (104) or the server (108) may be included in the second network (199).
  • the electronic device (101) can be applied to intelligent services (e.g., smart home, smart city, smart car, or healthcare) based on 5G communication technology and IoT-related technology.
  • an electronic device may play video content.
  • the video content may be configured based on a plurality of frame sets.
  • One frame set may include a plurality of frames.
  • the plurality of frames may include an I frame (intra-coded frame) and at least one P frame (predicted frame).
  • the plurality of frames may also include a B frame (bi-directionally predicted frame).
  • the plurality of frames will be described as including an I frame and at least one P frame.
  • the I frame may be referred to as a reference frame.
  • the P frame may be referred to as a predicted frame.
  • a playback section may be set.
  • An electronic device may identify a seek request for playing the video content from a first point in time (or a first seek time) during the playback section.
  • the electronic device may identify a frame set for the first point in time and decode a reference frame (or I-frame) of the identified frame set.
  • the electronic device may sequentially decode frames from the reference frame of the frame set to the frame for the first point in time to output a frame for the first point in time.
  • the electronic device may decode the frames from the reference frame to the frame for the point in time (or seek time) according to the seek request. If multiple seek requests are identified, decoding may be repeated.
  • resource consumption e.g., processing resources or time resources of the electronic device
  • resource consumption e.g., processing resources or time resources of the electronic device
  • a point in time corresponding to a search request may be referred to as a search point in time corresponding to a search request.
  • Figure 2 illustrates an example of repeated decoding in an electronic device.
  • a processor (120) of an electronic device (101) can play video content.
  • the video content may include a plurality of frame sets.
  • the processor (120) can identify a search request.
  • the search request may be received from a user or an external electronic device.
  • the video content may be played through a software application for playing the video content.
  • the software application may provide a user interface for playing the video content.
  • the user interface may include elements (e.g., a play bar, a scrub bar, a scrubber, a seek bar, a progress bar, or a track slider) set based on a playback section of the video content.
  • the processor (120) can identify a search request based on an input to the elements.
  • the elements may indicate a playback section.
  • the processor (120) can identify an input indicating a specific point in time through the elements.
  • the processor (120) can identify the input indicating the specific point in time as a search request.
  • the processor (120) can identify (or receive) a first search request. Based on the first search request, the processor (120) can identify a first point in time (or a first search point in time) within the playback interval. The processor (120) can identify a frame set (200) including frames related to the first point in time.
  • the frame set (200) can include an I frame (201), and P frames (202) to P frames (209).
  • the I frame (201) may be displayed between 1000 [ms] and 1032 [ms] during the playback period of the video content.
  • the P frame (202) may be displayed between 1033 [ms] and 1065 [ms] during the playback period of the video content.
  • the P frame (203) may be displayed between 1066 [ms] and 1099 [ms] during the playback period of the video content.
  • the P frame (204) may be displayed between 1100 [ms] and 1132 [ms] during the playback period of the video content.
  • the P frame (205) may be displayed between 1133 [ms] and 1165 [ms] during the playback period of the video content.
  • the P frame (206) may be displayed between 1166 [ms] and 1199 [ms] during the playback period of the video content.
  • the P frame (207) may be displayed from 1200 [ms] to 1232 [ms] during the playback section of the video content.
  • the P frame (208) may be displayed from 1233 [ms] to 1265 [ms] during the playback section of the video content.
  • the P frame (209) may be displayed from 1266 [ms] to 1300 [ms] during the playback section of the video content.
  • the first point in time according to the first search request may be 1266 [ms] (milli-second).
  • the processor (120) may identify the P frame (209) based on the first point in time.
  • the processor (120) may perform decoding to output (or provide, display) the P frame (209).
  • the processor (120) may decode nine frames from the I frame (201) to the P frame (209).
  • the processor (120) may obtain the decoded P frame (209) based on decoding the nine frames.
  • the processor (120) may output (or provide, display) the decoded P frame (209).
  • the processor (120) may sequentially perform decoding of frames from the I frame (201) to the P frame (209).
  • the processor (120) may perform decoding until the P frame (209) is decoded. Even if the processor (120) performs decoding from the I frame (201) to the P frame (208), the processor (120) may return the decoded frames to the decoder. Even if the processor (120) performs decoding from the I frame (201) to the P frame (208), the processor (120) may remove the decoded frames from the I frame (201) to the P frame (208) from the buffer.
  • the processor (120) can identify a second seek request. Based on the second seek request, the processor (120) can identify a second point in time (or a second seek time) within the playback section. A frame set (200) including a frame related to the second point in time can be identified. The frame related to the second point in time can be included in the frame set (200) including the frame related to the first point in time.
  • the second point in time (or second seek time) according to the second seek request may be 1166 [ms].
  • the processor (120) may identify the P frame (206) based on the second point in time.
  • the processor (120) may perform decoding to output (or provide, display) the P frame (206).
  • the processor (120) may decode six frames from the I frame (201) to the P frame (206).
  • the processor (120) may obtain the decoded P frame (206) based on decoding the six frames.
  • the processor (120) may output (or provide, display) the decoded P frame (206).
  • the processor (120) may sequentially perform decoding of frames from the I frame (201) to the P frame (206). The processor (120) may perform decoding until the P frame (206) is decoded. Even if the processor (120) performs decoding from the I frame (201) to the P frame (205), the processor (120) may return the decoded frames to the decoder. Even if the processor (120) performs decoding from the I frame (201) to the P frame (205), the processor (120) may remove the decoded frames from the I frame (201) to the P frame (205) from the buffer.
  • the processor (120) can identify a third seek request. Based on the third seek request, the processor (120) can identify a third point in time (or a third seek time) within the playback section. A frame set (200) including a frame regarding the third point in time can be identified. The frame regarding the third point in time can be included in a frame set (200) that includes a frame regarding the first point in time and a frame regarding the second point in time.
  • the third time point according to the third search request may be 1133 [ms].
  • the processor (120) may identify the P frame (205) based on the third time point.
  • the processor (120) may perform decoding to output (or provide, display) the P frame (205).
  • the processor (120) may decode five frames from the I frame (201) to the P frame (205).
  • the processor (120) may obtain the decoded P frame (205) based on decoding the five frames.
  • the processor (120) may output (or provide, display) the decoded P frame (205).
  • the processor (120) may sequentially perform decoding of frames from the I frame (201) to the P frame (205). The processor (120) may perform decoding until the P frame (205) is decoded. Even if the processor (120) performs decoding from the I frame (201) to the P frame (204), the processor (120) may return the decoded frames to the decoder. Even if the processor (120) performs decoding from the I frame (201) to the P frame (204), the processor (120) may remove the decoded frames from the I frame (201) to the P frame (204) from the buffer.
  • the processor (120) can perform decoding of frames from I frame (201) to P frame (209) for decoding of P frame (209).
  • the processor (120) can perform decoding of frames from I frame (201) to P frame (206) for decoding of P frame (206).
  • the processor (120) can perform decoding of frames from I frame (201) to P frame (205) for decoding of P frame (205).
  • each time decoding is performed for a reverse seek request the same frames are repeatedly decoded.
  • the technical features for storing the decoded frames in a buffer and then outputting the stored and decoded frames based on a reverse seek request will be described.
  • Figure 3a illustrates an example of a simplified block diagram of an electronic device.
  • FIG. 3b illustrates an example of layers configured in an electronic device for playing video content according to a search request.
  • an electronic device (300) may be used to play video content.
  • the electronic device (300) may include at least some or all of the components of the electronic device (101) of FIG. 1.
  • the electronic device (300) may correspond to the electronic device (101) of FIG. 1.
  • the electronic device (300) may include a processor (310), a memory (320), a display (330), and/or a hardware codec (340).
  • the electronic device (300) may include at least one of the processor (310), the memory (320), the display (330), and/or the hardware codec (340).
  • the processor (310), the memory (320), the display (330), and the hardware codec (340) may be omitted depending on the embodiment.
  • the electronic device (300) when the codec unit (360) included in the memory (320) performs the function of the hardware codec (340), the electronic device (300) may not include the hardware codec (340). For example, when the hardware codec (340) performs the function of the codec unit (360) included in the memory (320), the electronic device (300) may not include the codec unit (360). According to one embodiment, the electronic device (300) may include both the hardware codec (340) and the codec unit (360).
  • the processor (310) may be operatively or operably coupled with or connected with a memory (320), a display (330), and/or a hardware codec (340).
  • the processor (310) being operatively or operably coupled with the memory (320), the display (330), and/or the hardware codec (340) may mean that the processor (310) can control the memory (320), the display (330), and/or the hardware codec (340).
  • the memory (320), the display (330), and/or the hardware codec (340) may be controlled by the processor (310).
  • the processor (310) may include at least a portion of the processor (120) of FIG. 1, or may correspond to at least a portion of the processor (120).
  • the processor (310) may include one or more processors, including an application processor (AP) and/or a communication processor (CP).
  • AP application processor
  • CP communication processor
  • the processor (310) may be implemented as a single chip, such as a system on chip (SoC), or may be implemented as multiple chips.
  • SoC system on chip
  • the processor (310) may be implemented as a single integrated circuit (IC) or may be implemented as multiple ICs.
  • the processor (310) may be arranged within the electronic device (300).
  • the display (330) of the electronic device (300) can output visualized information (e.g., a screen) to the user.
  • the display (330) can be controlled by a controller such as a GPU (graphics processing unit) to output visualized information to the user.
  • the display (330) can include a liquid crystal display (LCD), a plasma display panel (PDP), and/or one or more light emitting diodes (LEDs).
  • the LEDs can include organic LEDs (OLEDs).
  • the display (330) can include a flat panel display (FPD) and/or electronic paper.
  • the embodiment is not limited thereto, and the display (330) can have an at least partially curved shape or a deformable shape.
  • a display (330) having a deformable shape can be referred to as a flexible display.
  • the memory (320) of the electronic device (300) may include a circuit and/or a storage medium for storing data and/or instructions input and/or output to the processor (310).
  • the memory (320) may include, for example, volatile memory such as random-access memory (RAM) and/or non-volatile memory such as read-only memory (ROM).
  • RAM random-access memory
  • ROM read-only memory
  • the non-volatile memory may be referred to as storage.
  • the volatile memory may include, for example, at least one of dynamic RAM (DRAM), static RAM (SRAM), cache RAM, and pseudo SRAM (PSRAM).
  • DRAM dynamic RAM
  • SRAM static RAM
  • PSRAM pseudo SRAM
  • the non-volatile memory may include, for example, at least one of programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), flash memory, hard disk, compact disc, solid state drive (SSD), and embedded multi media card (eMMC).
  • PROM programmable ROM
  • EPROM erasable PROM
  • EEPROM electrically erasable PROM
  • flash memory hard disk, compact disc, solid state drive (SSD), and embedded multi media card (eMMC).
  • SSD solid state drive
  • eMMC embedded multi media card
  • the memory (320) may include at least a portion of the memory (130) of FIG. 1 or may correspond to at least a portion of the memory (130) of FIG. 1.
  • the memory (320) may be implemented as a single chip or as multiple chips.
  • the memory (320) may be implemented as a single integrated circuit or as multiple integrated circuits.
  • the memory (320) may be arranged within the electronic device (101).
  • the processor (310) of the electronic device (300) may execute instructions of the memory (320) within the electronic device (300) to perform functions and/or operations indicated by the instructions.
  • the at least one processor may be configured to collectively or individually execute the instructions.
  • the instructions may be included in one or more programs (350) stored in the memory (320) (e.g., a demuxer (351), a player (352), an output device (353), a codec unit (360), a storage method determiner (354), and a storage manager (355)).
  • programs e.g., a demuxer (351), a player (352), an output device (353), a codec unit (360), a storage method determiner (354), and a storage manager (355)).
  • each of the demuxer (351), the player (352), the output device (353), the codec unit (360), the storage method determiner (354), and the storage manager (355) may include instructions.
  • each of the demuxer (351), the player (352), the output device (353), the codec unit (360), the storage method determiner (354), and the storage manager (355) may be executed by the processor (310).
  • the player (352) can control the operations of the demuxer (351), the output device (353), the codec unit (360), the storage method determiner (354), and the storage manager (355).
  • the player (352) can control the playback of video content by controlling the operations of the demuxer (351), the output device (353), the codec unit (360), the storage method determiner (354), and the storage manager (355).
  • the player (352) can process a search request regarding video content by controlling the operations of the demuxer (351), the output device (353), the codec unit (360), the storage method determiner (354), and the storage manager (355).
  • the player (352) may obtain (or identify) input related to the playback of video content.
  • the player (352) may obtain an input for playing or stopping the playback of the video content.
  • the player (352) may obtain an input for adjusting the playback speed of the video content.
  • the player (352) may obtain a seek request.
  • the seek request may mean a request (or input) for changing the playback position of the video content.
  • the demuxer (351) can demux a file for video content (or a stream obtained via wired/wireless communication).
  • the demuxer (351) can obtain a video stream and/or an audio stream by parsing a file.
  • the demuxer (351) can include at least one demuxer according to the muxed form.
  • the demuxer (351) can include at least one of an MP4 demuxer, an AVI demuxer, and/or an MKV (Matroska Video) demuxer.
  • the demuxer (351) can include a demuxer of another type in addition to the MP4 demuxer, the AVI demuxer, and/or the MKV demuxer.
  • the demuxer (351) can identify the location of a specified frame in video content.
  • the demuxer (351) can identify a frame set in relation to a playback point among multiple frame sets of the video content.
  • the demuxer (351) can identify a frame set based on identifying the location of the specified frame.
  • the demuxer (351) can identify a frame set including the specified frame.
  • a frame set may be referred to as a group of pictures (GOP).
  • a frame set may consist of a plurality of frames, from an I frame to a P frame preceding the next I frame.
  • the demuxer (351) may identify an I frame within an identified frame set.
  • the codec unit (360) may include an encoder (361) and a decoder (362).
  • the encoder (361) may compress a video stream.
  • the decoder (362) may decompress the compressed video stream. Based on the decompression of the compressed video stream, the decoder (362) may obtain a video stream in a specified format (e.g., YUV format).
  • a specified format e.g., YUV format
  • the electronic device (300) includes a hardware codec (340)
  • part or all of the codec unit (360) may be included in the hardware codec (340).
  • an I frame can be decoded without reference to other frames.
  • a P frame can be decoded with reference to a preceding P frame and/or an I frame, but is not limited thereto.
  • the plurality of frames can include a B (bi-directional prediction) frame.
  • a B frame can be decoded with reference to a subsequent P frame and/or a preceding I frame.
  • a B frame can be decoded with reference to a subsequent B or P frame and/or a preceding I frame within its GOP.
  • the output device (353) can obtain a video stream in a specified format and output the video stream in the specified format (e.g., YUV format) through the display (330).
  • a specified format e.g., YUV format
  • the storage method determiner (354) may identify the number of buffers (e.g., the minimum number of buffers) that can be secured by the player based on a seek request (e.g., a reverse seek request). Based on the identified number of buffers, the storage method determiner (354) may determine a method for storing one or more decoded frames.
  • a seek request e.g., a reverse seek request
  • a method for storing one or more decoded frames may be changed depending on a first mode and a second mode, which are modes for searching the video content.
  • the first mode and the second mode may be set based on configuration information regarding the video content.
  • the configuration information regarding the video content may include at least one of information regarding a mode for searching the video content, information regarding memory resources for the video content, a number of playbacks of the video content, an average playback time of the video content, a number of search requests regarding the video content, or a number of frames within a group of pictures (GOP) of the video content.
  • the first mode may be set for efficient memory management and use of the decoder (362).
  • a memory area allocated for the decoder (362) may be shared. Since the memory area allocated for the decoder (362) is shared, at least one buffer allocated for the decoder (362) may be used in the player (352). Since the memory area allocated for the decoder (362) is shared, at least one buffer allocated for the decoder (362) may be used in the output device (353). Accordingly, the decoded video may be output without being copied to the display (330). Accordingly, in the first mode, memory may be minimally allocated, and a memory (or buffer) copying process that places a high load on the processor (310) (e.g., CPU) may not be performed.
  • the processor (310) e.g., CPU
  • the player (352) may copy the buffers allocated to the decoder (362) to output the decoded frames.
  • the number of buffers may not be limited.
  • a specified number of buffers may be allocated for a search request.
  • the processor (310) may use the specified number of buffers among the first buffers pre-allocated for decoding for a search request. Since the specified number of buffers among the pre-allocated first buffers are used for a search request, the number of buffers used for a search request may be limited.
  • the first buffers allocated for decoding may be configured as follows.
  • the first buffers may include buffers required for decoding in the codec unit (360), buffers for reducing (or preventing) video interruption during playback, and buffers required in the output unit (353).
  • the number of the first buffers may be set as the sum of the minimum number of buffers required for decoding in the codec unit (360), the number of buffers for reducing (or preventing) video interruption during playback, and the minimum number of buffers required in the output unit (353).
  • buffers for reducing (or preventing) video interruption during playback may be allocated for a seek request.
  • the processor (310) may allocate, among the first buffers, buffers for reducing (or preventing) video interruption during playback for a seek request.
  • buffers for seek requests may be allocated from the memory (320). Accordingly, the number of buffers allocated for seek requests according to the second mode may be greater than the number of buffers used for seek requests according to the first mode. In the second mode, the number of buffers allocated for seek requests may be increased through double buffering (or triple buffering). A specific example of double buffering will be described later in FIG. 12b.
  • the storage manager (355) may acquire buffers for the seek request and store one or more decoded frames according to a method for storing one or more decoded frames determined by the storage method determiner (354). When a decoded frame corresponding to a frame for the seek request is stored in a buffer, the storage manager (355) may immediately output the decoded frame.
  • a seek request e.g., a reverse seek request
  • the storage manager (355) may acquire buffers for the seek request and store one or more decoded frames according to a method for storing one or more decoded frames determined by the storage method determiner (354).
  • the storage manager (355) may immediately output the decoded frame.
  • the memory (320) may further include instructions for a playback position indicator (e.g., a playback position indicator (381) of FIG. 3B).
  • the playback position indicator may display elements (e.g., a play bar, a scrub bar, a scrubber, a seek bar, a progress bar, or a track slider) for indicating the current playback time from the player (352), the length of the playback section of the video content, and the playback time.
  • the playback position indicator may receive a seek request from a user and transmit (or provide) the seek request to the player (352).
  • At least one of the demuxer (351), the player (352), the output device (353), the codec unit (360), the storage method determiner (354), and the storage manager (355) may be configured as hardware (e.g., a processor, an integrated circuit (IC) chip, a graphic processing unit (GPU)).
  • the present invention is not limited thereto.
  • At least one of the demuxer (351), the player (352), the output device (353), the codec unit (360), the storage method determiner (354), and the storage manager (355) may be implemented as a software module (or program).
  • at least some functions of the codec unit (360) may be performed in the hardware codec (340).
  • the layers configured in the electronic device (300) for playing back video content according to a search request may include a hardware layer (391), a framework layer (392), and an application layer (393).
  • the hardware layer (391) may include a memory (320), a display (330), and a hardware codec (340).
  • the framework layer (392) may include a demuxer (351), a player (352), an output device (353), a storage method determiner (354), a storage manager (355), and a decoder (362).
  • the application layer (393) may include a playback position indicator (381).
  • the player (352) when video content is played, can obtain a video stream through the demuxer (351).
  • the player (352) can provide (or transmit) the obtained video stream (e.g., frames) to the decoder (362).
  • the player (352) can obtain a decompressed video stream (e.g., frames) from the decoder (362).
  • the player (352) can provide (or transmit) the decompressed video stream (e.g., decoded frames) to the output device (353).
  • the output device (353) can display the video content through the display (330).
  • the playback position display unit (381) can obtain information about the current playback time from the player (352).
  • the playback position display unit (381) can display the current playback time within the playback section for the video content through a user interface.
  • the player (352) may request a video stream for a point in time according to the seek request from the demuxer (351).
  • the player (352) may obtain the video stream for a point in time according to the seek request from the demuxer (351).
  • the player (352) may provide (or transmit) the obtained video stream (e.g., frames) to the decoder (362).
  • the player (352) may obtain a decompressed video stream (e.g., frames) from the decoder (362).
  • the player (352) may provide (or transmit) the decompressed video stream (e.g., decoded frames) to the output device (353).
  • the output device (353) may display the video content through the display (330).
  • the playback position display unit (381) may obtain information about the currently playing point in time from the player (352).
  • the playback position indicator (381) can display the current playback point within the playback section for the video content through a user interface.
  • the player (532) can play the video content and process a position movement command using the demuxer (351), the decoder (362), the output device (353), the storage method determiner (354), and/or the storage manager (355).
  • the playback position indicator (381) can display the current playback position from the player (532), the length of the video content (e.g., media) being played, and the position of an element (e.g., a play bar, a scrub bar, a scrubber, a seek bar, a progress bar, or a track slider) set based on the playback section of the video content.
  • the playback position indicator (381) can transmit a request to the player (532) to move the playback position based on a request received from a user.
  • the storage manager (355) can provide the decoded frame to a player (352).
  • the player (352) can provide the decoded frame to an output device (353).
  • the output device (353) can display the frame at a point in time according to the search request through a display (330).
  • the operations of the demuxer (351), the player (352), the output device (353), the codec unit (360), the storage method determiner (354), and the storage manager (355) will be described as being performed by the processor (310).
  • the processor (310) may perform at least one operation for outputting a frame according to a search request by using at least one of the demuxer (351), the player (352), the output device (353), the codec unit (360), the storage method determiner (354), and the storage manager (355).
  • Figure 4 illustrates a flowchart of the operations of an electronic device for outputting a frame in response to a search request.
  • the operations may be performed sequentially, but are not necessarily sequential.
  • the order of the operations may be changed, and at least two operations may be performed in parallel.
  • the processor (310) of the electronic device (300) may identify a first frame among a plurality of frames for video content based on a first search request.
  • the processor (310) may identify a first frame among a plurality of frames for video content for the first search request based on a first search request for video content.
  • the video content may include a plurality of frame sets.
  • the frame sets may be referred to as a Group of Programs (GOP).
  • GOP Group of Programs
  • each of the plurality of frame sets may include a plurality of frames.
  • the processor (310) may identify a frame set corresponding to a first search request among the plurality of frame sets.
  • the processor (310) may identify a first frame corresponding to the first search request among the plurality of frames within the identified frame set.
  • a plurality of frames may be sequentially arranged based on time.
  • the plurality of frames may include a reference frame (e.g., an I-frame) and at least one prediction frame (e.g., a P-frame).
  • Each of the plurality of frames may constitute a portion of a playback section of the video content.
  • a portion of a playback section of the video content may be output.
  • a first seek request may indicate a first point in time (or a first seek point in time) in the playback section of the video content.
  • the first frame may be output at the first point in time in the playback section of the video content.
  • the first frame may be output from the first point in time for a duration corresponding to the first frame.
  • the processor (310) may perform decoding of frames from a reference frame to a first frame within a plurality of frames. For example, the processor (310) may perform decoding of frames from a reference frame to the first frame within a plurality of frames based on identifying a first frame related to a first search request.
  • the processor (310) may sequentially perform decoding from a reference frame to a first frame using a decoder (362). Decoding may be sequentially performed from the reference frame to the first frame.
  • the processor (310) may store one or more decoded frames.
  • the processor (310) may store one or more decoded frames in a memory (e.g., buffers) based on the decoding.
  • the processor (310) may identify buffers capable of storing the decoded frames. If the number of buffers capable of storing the frames is sufficient, the processor (310) may store the decoded frames. If the number of buffers capable of storing the frames is insufficient, the processor (310) may sequentially delete the oldest frame among the allocated buffers to store the decoded frames.
  • one or more decoded frames may be stored in designated buffers.
  • the designated buffers may be changed according to modes for searching video content.
  • the modes for searching video content may include a first mode and a second mode.
  • the mode for searching video content may be determined based on configuration information regarding the video content. The specific operation of the processor (310) for determining the designated buffers will be described later in FIG. 5A.
  • a memory area allocated for the decoder (362) may be shared. Since the memory area allocated for the decoder (362) is shared, at least one buffer allocated for the decoder (362) may be used by the player (352). Since the memory area allocated for the decoder (362) is shared, at least one buffer allocated for the decoder (362) may be used by the video content output device (353).
  • the first mode may be referred to as a zero copy mode or a shared buffer mode.
  • the player (352) in the second mode, can copy the buffers assigned to the decoder (362).
  • the number of buffers may not be limited.
  • the second mode may be referred to as buffer copy mode or designated buffer mode.
  • the processor (310) may store one or more decoded frames in a designated number of buffers among the first buffers allocated for decoding in a first mode. According to one embodiment, the processor (310) may store one or more decoded frames in the second buffers allocated for a search request in a second mode.
  • the processor (310) may obtain decoded frames based on decoding of frames from a reference frame to a first frame.
  • the processor (310) may store one or more decoded frames among the decoded frames in the memory (320).
  • the number of the one or more decoded frames may correspond to the number of buffers of the memory (320) in which the one or more decoded frames are stored.
  • the processor (310) may store one or more decoded frames among the decoded frames in the buffers of the memory (320) based on the number of buffers.
  • the processor (310) may identify a second search request.
  • the processor (310) may identify a second search request that is distinct from the first search request.
  • the second search request may indicate a second point in time (or a second search point in time) within the playback section of the video content.
  • the second point in time may precede the first point in time.
  • the second frame may be output at the second point in time within the playback section of the video content.
  • the second frame may be output for a duration corresponding to the second frame from the second point in time.
  • the processor (310) may determine (or identify) whether a decoded frame corresponding to the second frame is included in one or more decoded frames. For example, based on the second search request, the processor (310) may determine (or identify) whether a decoded frame corresponding to the second search request is included in one or more decoded frames.
  • the processor (310) may determine (or identify) whether a decoded frame corresponding to the second search request is included in one or more decoded frames to determine whether to perform decoding for the second frame.
  • the processor (310) may output the decoded frame corresponding to the second frame. For example, based on a determination that the decoded frame corresponding to the second frame for the second search request is included in one or more decoded frames, the processor (310) may store the decoded frame corresponding to the second frame in the memory (320) and output the decoded frame corresponding to the second frame through the display (330).
  • the processor (310) may store the decoded frame corresponding to the second frame in the memory (320) and output the decoded frame corresponding to the second frame through the display (330).
  • An example of outputting the decoded frame corresponding to the second frame when the decoded frame corresponding to the second frame is included in one or more decoded frames will be described later with reference to FIG. 8.
  • the processor (310) may perform decoding on the second frame using the decoder (362). For example, based on a determination that the decoded frame corresponding to the second frame for the second search request is not included in the one or more decoded frames, the processor (310) may perform decoding on the second frame using the decoder (362). For example, based on identifying that the decoded frame corresponding to the second frame for the second search request is not included in the one or more decoded frames, the processor (310) may perform decoding on the second frame using the decoder (362).
  • the decoded frame corresponding to the second frame may not be included in one or more decoded frames. For example, due to an insufficient number of buffers, the decoded frame corresponding to the second frame may have been deleted. An example of decoding the second frame due to an insufficient number of buffers will be described later in FIG. 7. For example, if the second frame is arranged after the first frame, the decoded frame corresponding to the second frame may not be included in one or more decoded frames.
  • the processor (310) may perform decoding on the second frame if the decoded frame corresponding to the second frame is not included in one or more decoded frames, even if the second frame is included in the same frame set as the first frame. For example, the processor (310) may perform decoding of frames from a reference frame to the second frame within the frame set including the second frame. Based on the decoding of frames from the reference frame to the second frame within the frame set including the second frame, the processor (310) may output the decoded frame (or the second frame) corresponding to the second frame through the display (330).
  • a second set of frames including a second frame may be distinguished from a first set of frames including a first frame.
  • the processor (310) may remove one or more decoded frames stored in the memory (320) based on identifying that the second set of frames including the second frame is distinguished from the first set of frames including the first frame.
  • the processor (310) may identify a plurality of other frames included in the second set of frames.
  • the processor (310) may decode frames from a reference frame to a second frame within the plurality of other frames.
  • the processor (310) may store one or more decoded other frames in the memory (320) based on decoding of frames from the reference frame to the second frame within the plurality of other frames.
  • FIGS. 9A and 9B A specific example of storing one or more decoded other frames in memory (320) when a second frame set including a second frame is distinct from a first frame set including a first frame will be described later in FIGS. 9A and 9B.
  • the processor (310) may remove a decoded frame from the memory (320) based on outputting a decoded frame corresponding to a second frame among one or more decoded frames.
  • a specific example of removing the decoded frame from the memory (320) based on outputting the decoded frame will be described later in FIG. 10.
  • the processor (310) may not remove the decoded frame from the memory (320) and may maintain it.
  • FIG. 5A illustrates a flowchart of operations of an electronic device for determining a method for storing one or more decoded frames.
  • Figure 5b illustrates an example of buffers set according to a method for storing one or more decoded frames.
  • the processor (310) can perform operations 510 to 550 described below using the storage method determiner (354).
  • the processor (310) may identify configuration information regarding the video content.
  • the configuration information regarding the video content may include at least one of information regarding a mode for searching the video content, information regarding memory resources for the video content, the number of times the video content is played, an average playing time of the video content, the number of search requests regarding the video content, or the number of frames within a group of pictures (GOP) of the video content.
  • GOP group of pictures
  • the processor (310) may identify information regarding a mode for searching the video content among the configuration information regarding the video content. Based on the information regarding the mode for searching the video content, the processor (310) may identify the mode for searching the video content as one of a first mode and a second mode. For example, the information regarding the mode for searching the video content may be related to information regarding the output operation of a codec.
  • the first mode may be set for efficient memory management and use of the decoder (362).
  • a memory area allocated for the decoder (362) may be shared. Since the memory area allocated for the decoder (362) is shared, at least one buffer allocated for the decoder (362) may be used by the player (352). Since the memory area allocated for the decoder (362) is shared, at least one buffer allocated for the decoder (362) may be used by the output device (353). Accordingly, the decoded video may be output without being copied to the display (330). Accordingly, in the first mode, memory may be minimally allocated, and a memory (or buffer) copying process that places a high load on the processor (310) (e.g., CPU) may not be performed.
  • the processor (310) e.g., CPU
  • the processor (310) may copy buffers allocated to the decoder (362) using the player (352).
  • the processor (310) may copy buffers allocated to the decoder (362) for playing back video content.
  • the number of buffers may not be limited.
  • the processor (310) may identify whether the mode for searching the video content is the first mode.
  • the processor (310) may identify whether the mode for searching the video content is the first mode to allocate buffers for storing the decoded frames.
  • the processor (310) may allocate a specified number of buffers from among the first buffers allocated for decoding (or the decoder (362)) for the seek request. For example, the processor (310) may allocate a specified number of buffers from among the first buffers allocated for decoding for the seek request based on identifying the mode for seeking video content as the first mode. For example, the processor (310) may allocate a specified number of buffers from among the first buffers allocated for decoding for the seek request in accordance with a determination that the mode for seeking video content is the first mode.
  • the decoder (362) may determine the number of first buffers allocated for decoding.
  • the first buffers may include buffers required for decoding in the codec unit (360), buffers for reducing (or preventing) video interruption during playback, and buffers required in the output unit (353).
  • the storage method determiner (354) e.g., the storage method determiner (354) of FIG. 3A
  • the storage method determiner (354) may identify the number of first buffers.
  • the storage method determiner (354) may determine the number of buffers that do not need to be returned to the decoder (362) among the first buffers.
  • the storage method determiner (354) may allocate a specified number of buffers that do not need to be returned to the decoder (362) for a seek request.
  • the first buffers may be allocated for decoding.
  • the first buffers may include buffers required for decoding in the codec unit (360), buffers for reducing (or preventing) video interruption during playback, and buffers required in the output unit (353).
  • the number of the first buffers may be set as the sum of the minimum number of buffers required for decoding in the codec unit (360), the number of buffers for reducing (or preventing) video interruption during playback, and the minimum number of buffers required in the output unit (353).
  • the processor (310) may allocate a specified number of buffers among the first buffers. For example, the processor (310) may allocate buffers for reducing (or preventing) video interruption during playback for a seek request. As an example, the number of buffers for reducing (or preventing) video interruption during playback may be set to 7. The number of buffers required for decoding in the codec unit (360) may be set to 6. The number of buffers required in the output unit (353) may be set to 4. Accordingly, the number of first buffers may be set to 17. The processor (310) may allocate 7 buffers for reducing (or preventing) video interruption during playback for a seek request using the storage method determiner (354).
  • the processor (310) may determine the number of second buffers to be allocated for the search request. For example, the processor (310) may determine the number of second buffers to be allocated for the search request based on identifying the mode for searching the video content as the second mode. For example, the processor (310) may determine the number of second buffers to be allocated for the search request in accordance with a determination that the mode for searching the video content is the second mode.
  • the processor (310) may allocate a determined number of second buffers for the search request.
  • the processor (310) may determine the number of second buffers to be allocated for a search request based on configuration information regarding the video content.
  • the second buffers may be distinct from the first buffers.
  • the processor (310) may determine the number of second buffers to be allocated for a search request based on at least one of the following: information about memory resources for the video content, the number of times the video content is played, the average play time of the video content, the number of search requests for the video content, or the number of frames in a group of pictures (GOP) of the video content, among the configuration information about the video content.
  • the processor may determine the number of second buffers to be allocated for a search request based on at least one of the following: information about memory resources for the video content, the number of times the video content is played, the average play time of the video content, the number of search requests for the video content, or the number of frames in a group of pictures (GOP) of the video content, among the configuration information about the video content.
  • GOP group of pictures
  • the processor (310) may determine the number of second buffers based on whether memory resources for video content are sufficient.
  • the processor (310) may increase the number of second buffers as the memory resources for video content are sufficient.
  • the processor (310) may use a double buffering method (or a triple buffering method) to increase the number of second buffers.
  • the processor (310) may determine the number of second buffers based on the resolution of the video content. When the resolution of the video content is high, the processor (310) may reduce the number of second buffers to prevent excessive use of memory resources. For example, the processor (310) may set the number of second buffers to 15 for video content having a first resolution. For example, the processor (310) may set the number of second buffers to 7 for video content having a second resolution higher than the first resolution.
  • the processor (310) may determine the number of second buffers based on the GOP of the video content.
  • the processor (310) may increase the number of second buffers based on a GOP larger than a specified size.
  • the processor (310) may use a double buffering method (or a triple buffering method) to increase the number of second buffers.
  • the processor (310) may determine the number of second buffers based on information regarding the user's preference for video content.
  • the information regarding the user's preference for video content may include the number of times the video content has been played, the average playback time of the video content, and/or the number of search requests regarding the video content.
  • the number of times the video content has been played, the average duration of the video content, and/or the number of search requests regarding the video content may be stored in a database for the video content.
  • the number of times the video content has been played, the average duration of the video content, and/or the number of search requests regarding the video content may be included in metadata of the video content.
  • the processor (310) may determine the number of second buffers based on the number of times the video content is played.
  • the processor (310) may increase the number of second buffers based on the number of times the video content is played being greater than a specified number.
  • the processor (310) may use a double buffering method (or a triple buffering method) to increase the number of second buffers.
  • the processor (310) may determine the number of second buffers based on the number of search requests for video content.
  • the processor (310) may increase the number of second buffers based on the number of search requests being greater than a specified number.
  • the processor (310) may use a double buffering scheme (or a triple buffering scheme) to increase the number of second buffers.
  • the number of times the video content is played may be 50.
  • the number of seek requests (e.g., reverse seek requests) for the video content may be 3000.
  • the average playback time of the video content may be 4 seconds.
  • the processor (310) may identify that an average of 60 seek requests (e.g., reverse seek requests) occur when the video content is played once. Since the average playback time is 4 seconds, the processor (310) may identify that an average of 15 seek requests occur per second.
  • the processor (310) may increase the number of second buffers because the average number of seek requests per second of the video content is 15.
  • the processor (310) may use a double buffering scheme (or a triple buffering scheme) to increase the number of second buffers.
  • buffers can be allocated for search requests according to the first mode (591) and the second mode (592).
  • the memory area allocated for the decoder (362) may be shared. Therefore, in the first mode (591), memory may be allocated to a minimum, and a memory (or buffer) copy process that may place a high load on the processor (310) (e.g., CPU) may not be performed. According to one embodiment, a frame decoded by the decoder (362) may be output to the player (352), the output device (353), and the display (330) without copying. Through the first mode (591), the memory area may be allocated to a minimum. Through the first mode (591), a memory copy that may place a high load on the CPU may not be performed.
  • first buffers (581) may be allocated within the storage area of the memory (320).
  • the first buffers (581) may be allocated for decoding.
  • the first buffers (581) may include buffers required for decoding in the codec unit (360), buffers for reducing (or preventing) video interruption during playback, and buffers required in the output unit (353).
  • the processor (310) may allocate a specified number of buffers (582) among the first buffers for a seek request.
  • the processor (310) may allocate buffers for a seek request to reduce (or prevent) video interruption during playback. Since a specified number of buffers (582) among the first buffers are allocated for a seek request in the first mode (591), the number of buffers (582) allocated for a seek request may be fixed.
  • the player (352) may copy the buffers allocated to the decoder (362) to output the decoded frames.
  • the number of buffers may not be limited.
  • second buffers (583) may be allocated within the storage area of the memory (320).
  • the second buffers (583) may be allocated for search requests.
  • the processor (310) may determine the number of second buffers (583) based on configuration information regarding video content.
  • the number of second buffers may be dynamically changed.
  • FIGS. 6 to 11b an example of the operation of an electronic device (300) (or processor (310)) for allocating buffers for a search request based on a first mode (591) will be described.
  • FIGS. 12a and 12b an example of the operation of the electronic device (300) (or processor (310)) for allocating buffers for a search request based on the second mode (592) will be described.
  • Figure 6 illustrates an example of the operation of an electronic device according to a first search request.
  • the processor (310) may receive a first search request through the playback position display unit (381).
  • the processor (310) may use the player (352) to identify the first point in time (or the first search point in time) indicated by the first search request.
  • the first point in time indicated by the first search request may indicate 1220 [ms].
  • the processor (310) may request the demuxer (351) to display a frame at the first point in time.
  • the processor (310) may use the demuxer (351) to identify a frame set for a first time point (e.g., 1220 [ms]).
  • the frame set may include a plurality of frames (610).
  • a frame (610-1) which is an initial frame, may be set as an I frame (or reference frame).
  • each of the remaining frames excluding the initial frame may be set as a P frame (or predicted frame).
  • frame (610-1) may be displayed between 1000 [ms] and 1032 [ms] during the playback period of the video content.
  • Frame (610-2) may be displayed between 1033 [ms] and 1065 [ms] during the playback period of the video content.
  • Frame (610-3) may be displayed between 1066 [ms] and 1099 [ms] during the playback period of the video content.
  • Frame (610-4) may be displayed between 1100 [ms] and 1132 [ms] during the playback period of the video content.
  • Frame (610-5) may be displayed between 1134 [ms] and 1165 [ms] during the playback period of the video content.
  • Frame (610-6) may be displayed between 1166 [ms] and 1199 [ms] during the playback period of the video content.
  • Frame (610-7) may be displayed between 1200 [ms] and 1232 [ms] during the playback period of the video content.
  • Frame (610-8) may be displayed between 1233 [ms] and 1265 [ms] during the playback period of the video content.
  • Frame (610-9) may be displayed between 1266 [ms] and 1299 [ms] during the playback period of the video content.
  • Frame (610-10) may be displayed between 1300 [ms] and 1333 [ms] during the playback period of the video content.
  • the processor (310) may obtain a frame (610-1) which is an I frame using a demuxer (351).
  • the processor (310) may transmit (or provide) the frame (610-1) which is an I frame to a decoder (362) using a player (352).
  • the processor (310) may perform decoding on the frame (610-1) using the decoder (362).
  • the processor (310) may store the decoded frame on the frame (610-1) in a buffer (651) among the buffers (650).
  • the processor (310) may obtain a frame (610-2), which is a P frame, using a demuxer (351).
  • the processor (310) may transmit (or provide) the frame (610-2), which is a P frame, to a decoder (362) using a player (352).
  • the processor (310) may perform decoding on the frame (610-2) using the decoder (362).
  • the processor (310) may perform decoding on the frame (610-2) using the frame (610-1), which is a previous frame of the frame (610-2).
  • the processor (310) may store the decoded frame for the frame (610-2) in a buffer (652) among the buffers (650).
  • the processor (310) can perform decoding for frames (610-3) to (610-7).
  • the processor (310) can perform decoding from frame (610-1), which is an I frame, to frame (610-7) corresponding to a first time point (e.g., 1220 [ms]). Decoding of frames from frame (610-1) to frame (610-7) can be performed sequentially.
  • the processor (310) may store the decoded frame for the frame (610-3) in a buffer (653) among the buffers (650) using the storage manager (355).
  • the processor (310) may store the decoded frame for the frame (610-4) in a buffer (654) among the buffers (650) using the storage manager (355).
  • the processor (310) may store the decoded frame for the frame (610-5) in a buffer (655) among the buffers (650).
  • the processor (310) may store the decoded frame for the frame (610-6) in a buffer (656) among the buffers (650).
  • the processor (310) may store the decoded frame for the frame (610-7) in a buffer (657) among the buffers (650).
  • the processor (310) can store the decoded frame in a buffer according to the maximum number of buffers that can be stored using the storage manager (355).
  • the processor (310) may obtain frames (610-1 to 610-7) to be decoded from the demuxer (351), along with a timestamp and duration for each frame.
  • the timestamp for each frame may indicate the point in time at which each frame is output.
  • the duration for each frame may indicate the time interval during which the output of each frame is maintained.
  • seven buffers (650) may be allocated to store decoded frames.
  • the seven buffers (650) may be allocated from the first buffers allocated for decoding.
  • each of the buffers (650) may be indicated by a buffer pointer (or buffer index).
  • the buffer pointer value of buffer (651) may be set to a first value (e.g., '1').
  • the buffer pointer value of buffer (652) may be set to a second value (e.g., '2').
  • the buffer pointer value of buffer (653) may be set to a third value (e.g., '3').
  • the buffer pointer value of buffer (654) may be set to a fourth value (e.g., '4').
  • the buffer pointer value of buffer (655) may be set to a fifth value (e.g., '5').
  • the buffer pointer value of buffer (656) may be set to a sixth value (e.g., '6').
  • the buffer pointer value of buffer (657) may be set to a seventh value (e.g., '7').
  • a decoded frame, a timestamp, a duration, and a buffer pointer value may be stored in a buffer (e.g., buffer (651) to buffer (657)).
  • a buffer e.g., buffer (651) to buffer (657)
  • a decoded frame for frame (610-1), a timestamp of frame (610-1), a duration for frame (610-1), and a buffer pointer value of buffer (651) may be stored in buffer (651).
  • the processor (310) may first decode the frame (610-1), which is an I-frame. Since the decoded frame (610-1) does not correspond to the first time point (e.g., 1220 [ms]) indicated by the first search request, the processor (310) may not output the frame (610-1). The processor (310) may identify whether there is free space in the buffers (650) that do not need to be returned to the decoder (362). For example, the processor (310) may identify that seven buffers (650) are available. The processor (310) may store the decoded frame (610-1) in the buffer (651). The processor (310) may decode the frames and sequentially store the decoded frames in the buffers (650).
  • the processor (310) may identify whether there is free space in the buffers (650) that do not need to be returned to the decoder (362). For example, the processor (310) may identify that seven buffers (650) are available.
  • the processor (310) may store the decoded frame (610-1) in the buffer (651).
  • the processor (310) may
  • Figure 6 illustrates an example in which information (e.g., decoded frames, timestamps, durations, and buffer pointers) is stored in a buffer in list form, but is not limited thereto. At least one of a queue, a map, or a vector may be used to store information in the buffer.
  • information e.g., decoded frames, timestamps, durations, and buffer pointers
  • the processor (310) may output a decoded frame for the frame (610-7) based on the decoding performed on the frame (610-7) according to the first search request.
  • the processor (310) may obtain the decoded frame for the frame (610-7) using the storage manager (355) and output the decoded frame using the output unit (353).
  • the processor (310) may identify a frame (610-7) corresponding to a first point in time according to a first search request based on the timestamps and durations of the frames (610). For example, the processor (310) may identify a first point in time (e.g., 1220 [ms]) according to the first search request. The processor (310) may identify a frame that satisfies the following mathematical equation.
  • ts is a timestamp of a frame.
  • t is a first point in time according to a first search request.
  • d is the duration of the frame.
  • the processor (310) can identify a frame (e.g., frame (610-7)) corresponding to the first point in time according to the first search request. In an embodiment, if the processor (310) cannot identify the duration of the frames, it can identify a frame that satisfies the following Equation.
  • tsmin is the smallest timestamp among the timestamps of frames satisfying Equation 2.
  • t is the first time point according to the first search request.
  • the processor (310) can identify a frame (e.g., frame (610-7)) corresponding to the first time point according to the first search request using Equation 2.
  • the processor (310) can identify a frame (e.g., frame (610-8)) having a timestamp of tsmin.
  • the processor (310) can identify a frame preceding the frame having the timestamp of tsmin as a frame (e.g., frame (610-7)) corresponding to the first time point.
  • Figure 7 illustrates an example of the operation of an electronic device according to a first search request.
  • the processor (310) may identify a first search request.
  • the first search request may indicate a first time point (e.g., 1250 [ms]).
  • the processor (310) may identify a plurality of frames (610) including frame (610-8) for the first time point.
  • the processor (310) may sequentially perform decoding of frames from frame (610-1), which is an I frame, to frame (610-8). Specific operations for sequential decoding of frames from frame (610-1) to frame (610-8) may be referred to FIG. 6.
  • the processor (310) may perform decoding on the frame (610-7) and store the decoded frame for the frame (610-7) in the buffer (657). Since the number of buffers (650) allocated to store the decoded frames is 7, each of the buffers (650) may not be able to store an additional decoded frame.
  • the processor (310) may store decoded frames in the buffers (650) based on a first in first out (FIFO) basis. If all information (or data) is stored in the buffers (650), the processor (310) may delete information stored in the buffer (651) to store additional decoded frames. The processor (310) may delete information stored in the buffer (651) to store the decoded frame for the frame (610-8) (e.g., the decoded frame for the frame (610-1), the timestamp, the duration, and the buffer pointer value).
  • FIFO first in first out
  • information e.g., decoded frame, timestamp, duration, and buffer pointer value for frame (610-1)
  • the buffer (656) storing the frame with the smallest timestamp value of 1000 ms can be deleted.
  • the processor (310) may perform decoding for the frame (610-8) and store the decoded frame for the frame (610-8) in the buffer (651).
  • the buffer (651) may store a timestamp for the frame (610-8) (e.g., 1233 [ms]), a duration for the frame (610-8) (e.g., 33 [ms]), and a buffer pointer value for the buffer (651) (e.g., 8).
  • the buffer pointer value for the buffer (651) may be changed.
  • the processor (310) may delete information (e.g., a decoded frame, a timestamp, a duration, and a buffer pointer value for the frame (610-1)) stored in a buffer (651) having a first buffer pointer value (e.g., '1') and return the buffer (651) having the first buffer pointer value (e.g., '1') to the decoder (362).
  • the processor (310) may store the decoded frame, the timestamp, the duration, and the buffer pointer value for the frame (610-8) in a buffer (651) having a second buffer pointer value (e.g., '8').
  • the processor (310) may overwrite the decoded frame for the frame (610-9) into the buffer (651) without deleting the information stored in the buffer (651). In this case, the buffer pointer value may be maintained.
  • the processor (310) may store the decoded frame for the frame (610-9) in the buffer (652).
  • the processor (310) may delete information stored in the buffer (652) to store the decoded frame for the frame (610-9).
  • the processor (310) may store the decoded frame for the frame (610-9) in the buffer (652).
  • the processor (310) may overwrite the decoded frame for the frame (610-9) in the buffer (652) without deleting the information stored in the buffer (652).
  • the processor (310) may return buffers (650) to the decoder based on identifying a playback start request via the player (352).
  • the processor (310) may deallocate the buffers (650) for the seek request. After the buffers (650) are deallocated, the buffers (650) may be used for playback of the video content.
  • Figure 8 illustrates an example of the operation of an electronic device according to a first search request and a second search request.
  • the processor (310) may perform decoding for frames (610-1) to (610-7) based on the first search request.
  • the processor (310) may store the decoded frames for frames (610-1) to (610-7) in buffers (650).
  • the technical characteristics of storing the decoded frames for frames (610-1) to (610-7) in state (810) may correspond to the technical characteristics of FIG. 6.
  • the processor (310) can identify a second search request.
  • the processor (310) can identify (or receive) the second search request through the playback position indicator (381).
  • the processor (310) can identify a second point in time indicated by the second search request using the player (352).
  • the second point in time can be earlier than the first point in time.
  • the second point in time indicated by the second search request can indicate 1120 [ms].
  • the processor (310) can identify a frame (610-4) corresponding to the second point in time.
  • the processor (310) can identify whether the decoded frames stored in the buffers (650) include a decoded frame for the frame (610-4) corresponding to the second time point.
  • the processor (310) can identify that the buffer (654) includes a decoded frame for the frame (610-4).
  • the processor (310) can output the decoded frame for the frame (610-4) stored in the buffer (654) using the storage manager (355). As the decoded frame for the frame (610-4) stored in the buffer (654) is output, decoding for the frame (610-4) may not be performed. Therefore, as the decoded frame for the frame (610-4) stored in the buffer (654) is output, the delay time for decoding can be reduced.
  • FIG. 9a illustrates an example of the operation of an electronic device according to a first search request and a second search request.
  • FIG. 9b illustrates an example of the operation of an electronic device according to a first search request and a second search request.
  • the processor (310) may perform decoding for frames (610-1) to (610-7) based on the first search request.
  • the processor (310) may store the decoded frames for frames (610-1) to (610-7) in buffers (650).
  • the technical characteristics of storing the decoded frames for frames (610-1) to (610-7) in state (910) may correspond to the technical characteristics of FIG. 6.
  • the processor (310) can identify a second search request.
  • the processor (310) can identify (or receive) the second search request through the playback position indicator (381).
  • the processor (310) can identify a second point in time indicated by the second search request using the player (352).
  • the second point in time can be slower than the first point in time.
  • the second point in time indicated by the second search request can indicate 1280 [ms].
  • the processor (310) can identify a frame (610-9) corresponding to the second point in time.
  • the processor (310) can identify that the frame set including the frame (610-9) corresponding to the second point in time corresponds to the frame set including the frame (610-7).
  • the processor (310) may identify whether the decoded frames stored in the buffers (650) include a decoded frame for the frame (610-9) corresponding to the second time point.
  • the processor (310) may identify that the frame (610-9) is not included in the decoded frames stored in the buffers (650) because the second time point is after the first time point.
  • the processor (310) may perform decoding for the frame (610-8) to perform decoding for the frame (610-9).
  • the processor (310) may store the decoded frame for the frame (610-8) in the buffer (651).
  • the processor (310) may perform decoding for the frame (610-9).
  • the processor (310) may store the decoded frame for the frame (610-9) in the buffer (652).
  • the processor (310) can output a decoded frame for the frame (610-9) based on obtaining the decoded frame for the frame (610-9).
  • the processor (310) may perform decoding on frames (610-1) to (610-7) based on the first search request.
  • State (930) may correspond to state (910) of FIG. 9A.
  • the processor (310) can identify a second search request.
  • the processor (310) can identify (or receive) the second search request through the playback position indicator (381).
  • the processor (310) can identify a second point in time indicated by the second search request using the player (352).
  • the second point in time can be slower than the first point in time.
  • the second point in time indicated by the second search request can indicate 1550 [ms].
  • the processor (310) can identify a frame (620-2) corresponding to the second point in time.
  • the processor (310) can identify that a frame set including the frame (620-2) corresponding to the second point in time is distinct from a frame set including the frame (610-7).
  • the processor (310) may identify that a frame (620-1), which is an I-frame, exists between a first time point and a second time point.
  • the processor (310) may perform decoding from the frame (620-1), which is an I-frame, to the frame (620-2), which corresponds to the second time point.
  • the processor (310) may store the decoded frames from the frame (620-1) to the frame (620-2) in the buffers (650). For example, the processor (310) may remove the stored information from the buffers (650) according to the first search request, and store the decoded frames from the frame (620-1) to the frame (620-2) in the buffers (650).
  • the processor (310) may remove information stored in the buffers (650) and return the buffers (650) to the decoder (362).
  • the processor (310) may obtain the frame (620-1) using the demuxer (351).
  • the processor (310) may decode the frames from the frame (620-1) to the frame (620-2) using the decoder (362) and store the decoded frames in the buffer (651) and the buffer (652).
  • Figure 10 illustrates an example of the operation of an electronic device according to a first search request and a second search request.
  • the processor (310) performs decoding, and when a decoded frame is output, the processor may not store the decoded frame in the buffers (650).
  • the processor (310) may identify a first search request.
  • the processor (310) may identify a first point in time indicated by the first search request.
  • the first point in time may be 1250 [ms].
  • the processor (310) may identify a frame (1250) corresponding to the first point in time.
  • the processor (310) may decode frames from frame (610-1) to frame (610-8) to output a decoded frame for frame (610-8). For example, the processor (310) may sequentially decode frames from frame (610-1) to frame (610-8).
  • the processor (310) may store the decoded frame for the frame (610-1) in a buffer (651) among the buffers (650).
  • the processor (310) may store the decoded frame for the frame (610-2) in a buffer (652) among the buffers (650).
  • the processor (310) may store the decoded frame for the frame (610-3) in a buffer (653) among the buffers (650).
  • the processor (310) may store the decoded frame for the frame (610-4) in a buffer (654) among the buffers (650).
  • the processor (310) may store the decoded frame for the frame (610-5) in a buffer (655) among the buffers (650).
  • the processor (310) may store the decoded frame for the frame (610-6) in a buffer (656) among the buffers (650).
  • the processor (310) may store the decoded frame for the frame (610-7) in a buffer (657) among the buffers (650).
  • the processor (310) may output the decoded frame for the frame (610-8) without storing it in a buffer (e.g., buffer (651)) based on the decoding of the frame (610-8) corresponding to the first time point. Accordingly, the processor (310) may store the decoded frames for the frame (610-1) to the frame (610-7) in the buffers (650) based on outputting the decoded frame for the frame (610-8).
  • a buffer e.g., buffer (651)
  • the processor (310) may store the decoded frames for the frame (610-1) to the frame (610-7) in the buffers (650) based on outputting the decoded frame for the frame (610-8).
  • the processor (310) may identify a second search request.
  • the processor (310) may identify (or receive) the second search request through the playback position indicator (381).
  • the processor (310) may use the player (352) to identify a second point in time indicated by the second search request.
  • the second point in time may be earlier than the first point in time.
  • the second point in time indicated by the second search request may indicate 1120 [ms].
  • the processor (310) may identify a frame (610-4) corresponding to the second point in time.
  • the processor (310) can identify whether the decoded frames stored in the buffers (650) include a decoded frame for the frame (610-4) corresponding to the second time point.
  • the processor (310) can identify that the buffer (654) includes the decoded frame for the frame (610-4).
  • the processor (310) can output the decoded frame for the frame (610-4) stored in the buffer (654) using the storage manager (355). As the decoded frame for the frame (610-4) stored in the buffer (654) is output, the decoded frame for the frame (610-4) can be deleted from the buffer (654).
  • the processor (310) may return the buffer (654) to the decoder (362) based on deleting the decoded frame for frame (610-4) from the buffer (654).
  • FIG. 11a illustrates a flowchart of the operation of an electronic device when an error occurs in a specified number of buffers allocated for a search request.
  • Figure 11b illustrates an example where the number of buffers allocated for a search request is reduced.
  • the processor (310) may allocate a specified number of buffers among the first buffers allocated for decoding for a seek request.
  • the processor (310) may not return the specified number of allocated buffers to the decoder (362) while the seek request is maintained. Since some of the first buffers allocated for decoding are allocated for a seek request, if an error occurs in the specified number, a shortage of available buffers may occur in the decoder (362). For example, although the number of buffers allocated for a seek request is set to 7, the number of buffers allocated for a seek request may need to be 5 due to an error in the output number setting of the codec.
  • the following operations 1110 to 1150 will describe examples of operations of the processor (310) to resolve a problem resulting from a lack of available buffers in the decoder (362).
  • the processor (310) may identify the performance of the decoder (362).
  • the processor (310) may determine a threshold time based on the performance of the decoder (362).
  • the processor (210) may identify the performance of the decoder (362) and determine a threshold time based on the performance of the decoder (362).
  • the processor (310) may identify the performance of the decoder (362) to determine the threshold time.
  • the electronic device (300) when the electronic device (300) includes a hardware codec (340) and a decoder (362) (or codec unit (360)) is included in the hardware codec (340), the exact performance of the hardware codec (340) (or decoder (362)) can be estimated.
  • FPS according to resolution can be used as a performance of the codec unit (360).
  • the FPS according to resolution of the codec unit (360) can be configured as shown in the table below.
  • Table 1 shows the FPS according to the resolution of the h.264 codec. This is an example, and the processor (310) can also identify the FPS according to the resolution of other codecs.
  • the FPS may be 480.
  • the processor (310) may determine the threshold time based on the path along which the decoded frame is transmitted. For example, the processor (310) may determine the threshold time based on a multiple (e.g., 2x or 3x) of the decoding time for one frame.
  • the FPS for the resolution of (3840 x 2160) can be used.
  • the processor (310) can identify the FPS as 240 when the resolution of the video content is (2560 x 1440).
  • the processor (310) can determine the threshold time as 8 [ms].
  • the number of blocks processed per second (block-per-second) according to the block size can be used as the performance of the codec unit (360).
  • the number of blocks processed per second (block-per-second) according to the block size of the codec unit (360) can be configured as shown in the table below.
  • Table 2 shows the number of blocks processed per second (block-per-second) according to the block size of the h.264 codec. This is exemplary, and the processor (310) can also identify the number of blocks processed per second (block-per-second) according to the block size of other codecs.
  • the processor (310) can decode 1,990,656,000 pixels per second using the h.264 codec.
  • the number of pixels decoded per second can be identified as the product of the block size (i.e., (16x16)) and the number of blocks processed per second (i.e., 7776000).
  • the processor (310) can identify that it can decode 960 frames per second ((1,990,656,000 / 1920) / 1080) using the h.264 codec.
  • the processor (310) can set a threshold time through the storage manager (355).
  • the processor (310) can identify whether the time it takes for the decoded frame to be acquired exceeds a threshold time.
  • the processor (310) can identify whether the time it takes for the decoded frame to be acquired exceeds a threshold time to identify whether a problem occurs in the operation of the decoder (362).
  • the processor (310) may maintain the number of buffers allocated for the search request.
  • the processor (310) may maintain the number of buffers allocated for the search request based on identifying that the time it takes to acquire a decoded frame does not exceed the threshold time.
  • the processor (310) may maintain the number of buffers allocated for the search request based on identifying that the time it takes to acquire a decoded frame is within the threshold time.
  • the processor (310) may maintain the number of buffers allocated for the search request based on determining that the time it takes to acquire a decoded frame is within the threshold time.
  • the processor (310) may reduce the number of buffers allocated for the search request.
  • the processor (310) may reduce the number of buffers allocated for the search request based on identifying that the time it takes to acquire a decoded frame exceeds the threshold time.
  • the processor (310) may reduce the number of buffers allocated for the search request based on determining that the time it takes to acquire a decoded frame exceeds the threshold time.
  • the processor (310) may return at least one reduced buffer to the decoder (362).
  • the processor (310) may decrease the number of buffers allocated for a search request by one based on identifying that the time it takes to acquire a decoded frame exceeds a threshold time.
  • the processor (310) may decrease the number of buffers allocated for a search request by one until the time it takes to acquire a decoded frame falls within the threshold time.
  • the processor (310) may decrease the maximum number of buffers allocable for a search request based on identifying that the time it takes to acquire a decoded frame exceeds a threshold time.
  • the processor (310) may decode frames from frame (610-1) to frame (610-7) based on the first search request.
  • the processor (310) may store the decoded frames for frames from frame (610-1) to frame (610-7) in buffers (650).
  • the processor (310) may identify that the time at which the decoded frames for frames (610-1) through (610-7) are acquired exceeds a threshold time after the decoded frames are stored in the buffers (650).
  • the processor (310) may return one of the buffers (650) (e.g., buffer (651)) to the decoder (362) based on identifying that the time at which a decoded frame is acquired exceeds a threshold time.
  • buffers e.g., buffer (651)
  • the processor (310) may identify the number of buffers (650) using the storage manager (355). If the number of buffers (650) is 7, the processor (310) may remove the decoded frame for the first acquired frame (610-1) from the buffer (651). The processor (310) may return the buffer (651) to the decoder (362). The processor (310) may change the number of buffers (650) from 7 to 6. The processor (310) may decrease the number of buffers allocated for the search request by 1 until the time at which the decoded frame is acquired is within the threshold time.
  • Figure 12a illustrates examples of buffers allocated for search requests based on the second mode.
  • Figure 12b illustrates an example of additional buffers allocated for search requests based on the second mode.
  • the processor (310) can play video content based on the second mode.
  • the processor (310) can set the mode for searching video content to the second mode.
  • the player (352) may copy the buffers allocated to the decoder (362).
  • the number of second buffers to be allocated for a seek request may not be limited.
  • the processor (310) may directly allocate a buffer in the memory (320) rather than a buffer pointer (or buffer index) in the second mode.
  • the buffers allocated for a seek request may be configured by copying the buffers allocated to the decoder (362).
  • the processor (310) may allocate second buffers (1250) for search requests.
  • the number of second buffers (1250) may be configured as 10.
  • the second buffers (1250) may include buffer (1251), buffer (1252), buffer (1253), buffer (1254), buffer (1255), buffer (1256), buffer (1257), buffer (1258), buffer (1259), and buffer (1260).
  • the processor (310) may store a decoded frame, a timestamp, a duration, a buffer size, and a buffer address in each of the buffers included in the second buffers (1250).
  • the maximum number of allocated second buffers (1250) may be set to be greater than the maximum number of buffers allocated for a search request in the first mode.
  • the processor (310) may delete a decoded frame from one of the second buffers (1250) when the decoded frame is output from the buffer according to a search request, as shown in FIG. 10.
  • the processor (310) may not delete a decoded frame from one of the second buffers (1250) even if the frame is output from the buffer in response to a search request.
  • the processor (310) may dynamically change the number of the second buffers (1250) and may maintain a sufficient number of the second buffers (1250), so that even if the frame is output from one of the second buffers (1250) in response to a search request, the processor (310) may not delete a decoded frame from the buffer.
  • the processor (310) may further allocate third buffers in addition to the second buffers (1250) for search requests.
  • the third buffers may be configured as shown in FIG. 12B.
  • the processor (310) may allocate third buffers (e.g., the third buffers (1280) of FIG. 12B) in addition to the second buffers (1250) for search requests.
  • the processor (310) when the processor (310) stores the decoded frames in the second buffers (1250) as in FIG. 12A, it can identify that the frame set including the frame (620-2) according to the second time point indicated by the second search request is distinct from the frame set including the frame (610-9) according to the first time point indicated by the first search request.
  • the processor (310) may store the decoded frames for frame (610-1) to frame (610-9) in nine buffers (e.g., buffer (1251) to buffer (1259)) among the second buffers (1250).
  • the processor (310) may identify a second set of frames, which is distinct from the first set of frames of decoded frames stored in nine buffers, based on the second search request.
  • the processor (310) may identify a plurality of frames (620) within the second set of frames.
  • the processor (310) may decode frames from I frame (620-1) to frame (620-2) among the plurality of frames (620).
  • the processor (310) may store the decoded frames obtained based on the decoding of frames from frame (620-1) to frame (620-2) in third buffers (1280) that are distinct from the second buffers (1250).
  • the third buffers (1280) may include buffer (1281), buffer (1282), buffer (1283), buffer (1284), buffer (1285), buffer (1286), buffer (1287), buffer (1288), buffer (1289), and buffer (1290).
  • the processor (310) may additionally allocate third buffers (1280) based on the second search request without deleting data stored in the second buffers (1250).
  • the processor (310) may identify that the decoded frame for the frame according to the third time point indicated by the third search request (e.g., frame (610-4)) corresponds to one of the decoded frames stored in the second buffers (1250).
  • the processor (310) may output the decoded frame for the frame according to the third time point from one of the second buffers (1250).
  • the processor (310) may allocate the second buffers (1250) for the first frame set and the third buffers (1280) for the second frame set.
  • the processor (310) may store the search request in the second buffers (1250) and the third buffers (1280) and output the decoded frame according to the search request.
  • all data stored in the second buffers (1250) may be deleted and the decoded frames for the third frame set may be stored in the second buffers (1250).
  • FIG. 12b illustrates an example in which second buffers (1250) and third buffers (1280) are configured for two frame sets
  • the present invention is not limited thereto.
  • buffers may be allocated for three or more frame sets.
  • Figure 13a illustrates an example of a user interface for a search request.
  • Figure 13b illustrates an example of a user interface for a search request.
  • Figure 13c illustrates an example of a user interface for a search request.
  • the processor (310) of the electronic device (300) can display a user interface (1320, 1340, 1360) for playing video content through the display (330).
  • the user interface (1320, 1340, 1360) can be configured to play video content (1321, 1341, 1361).
  • the user interface (1320) may be associated with a gallery application.
  • the gallery application may provide functionality for previewing video content.
  • the processor (310) may display a filmstrip (1329) of video content.
  • the processor (310) may display an element (1322) for moving the playback point on the filmstrip.
  • the processor (310) may identify a first search request based on the movement of the element (1322) to the first point (1323). As an example, the processor (310) may identify a first frame related to the first search request. The processor (310) may identify a frame set including the first frame. The processor (310) may perform decoding from a reference frame to the first frame among the frame set (or a plurality of frames of the frame set). The processor (310) may store one or more decoded frames in the memory (320).
  • the processor (310) may identify that the element (1322) has moved from the first point (1323) to the second point (1324). Based on identifying that the element (1322) has moved from the first point (1323) to the second point (1324), the processor (310) may identify a second search request. As an example, the processor (310) may identify a second frame related to the second search request. The processor (310) may identify that a decoded frame corresponding to the second frame is included in one or more decoded frames. The processor (310) may output the decoded frame corresponding to the second frame without performing decoding on the second frame. Since the processor (310) does not perform decoding on the second frame, the second frame may be displayed without delay.
  • the user interface (1340) may be associated with a video playback application.
  • the processor (310) may display an element (1349) (e.g., a play bar, a scrub bar, a scrubber, a seek bar, a progress bar, or a track slider) indicating a playback section of the video content.
  • the processor (310) may display an element (1342) for indicating a point in time of the playback section on the element (1349).
  • the processor (310) may identify a first search request based on the movement of the element (1342) to the first point (1343).
  • the processor (310) may identify a first frame related to the first search request.
  • the processor (310) may identify a frame set including the first frame.
  • the processor (310) may decode frames from a reference frame to the first frame among the frame set (or a plurality of frames of the frame set).
  • the processor (310) may store one or more decoded frames in the memory (320).
  • the processor (310) may identify that the element (1342) has moved from the first point (1343) to the second point (1344). Based on identifying that the element (1342) has moved from the first point (1343) to the second point (1344), the processor (310) may identify a second search request. As an example, the processor (310) may identify a second frame related to the second search request. The processor (310) may identify that a decoded frame corresponding to the second frame is included in one or more decoded frames. The processor (310) may output the decoded frame corresponding to the second frame without performing decoding on the second frame. Since the processor (310) does not perform decoding on the second frame, the second frame may be displayed without delay.
  • the user interface (1360) may be associated with a video playback application.
  • the processor (310) may not display an element indicating a playback section of the video content. According to another embodiment, the processor (310) may display an element indicating a playback section of the video content based on a specified input (e.g., a tap input, a button input).
  • a specified input e.g., a tap input, a button input.
  • the processor (310) can identify a touch input that moves from a first point (1362) to a second point (1363). Based on the length of movement of the touch input from the first point (1362) to the second point (1363), a navigation request can be identified. For example, the processor (310) can identify whether a decoded frame for a frame according to a time point corresponding to the identified navigation request is stored in the memory (320). The processor (310) can output the decoded frame based on identifying that the decoded frame for the frame according to the time point is stored in the memory (320).
  • the processor (310) may allocate buffers for a search request based on a search request (e.g., a reverse search request), and the storage manager (355) may allocate buffers for the search request based on the number of output buffers.
  • a search request e.g., a reverse search request
  • the storage manager 355
  • the delay time may be reduced, thereby improving the user experience.
  • the search request may be identified from an external electronic device (e.g., a wearable device, a vehicle) connected to the electronic device (300).
  • the processor (310) of the electronic device (300) may receive the search request from the external electronic device and output a frame based on the received search request.
  • the processor (310) may receive the search request from the electronic device (300) and transmit the search request to the external electronic device while video content is being output from the external electronic device.
  • the processor (310) may change the size of the buffer using the storage manager (355). For example, the processor (310) may determine the size of the buffer based on the form of the frame to be finally output according to the resolution of the display (330) using the storage manager (355). For example, the processor (310) may identify the resolution of the display (330). The processor (310) may identify the output resolution based on a foldable display, a rollable display, and/or a display for displaying a virtual space. The processor (310) may determine the size of the buffer based on the output resolution. The processor (310) may scale the decoded frame based on the output resolution and store the scaled frame. The processor (310) may identify the size of the display (330) to be output in real time and change the size of the buffer in real time.
  • an electronic device may include a display, a memory including buffers and storing instructions, and at least one processor including a processing circuit.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to identify, based on a first seek request for video content, a first frame from among a plurality of frames in a group of pictures (GOP) of video content, the first frame corresponding to the first seek request.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to decode frames from a reference frame to the first frame within the plurality of frames.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to store one or more decoded frames from the decoded reference frame to the decoded first frame in buffers of the memory.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to display, on the display, a decoded frame corresponding to a second frame for the second search request, based on a second search request distinct from the first search request, in association with a determination that the decoded frame corresponding to the second frame is included in the at least one decoded frame stored in the buffers.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to perform decoding of the second frame based on a second search request distinct from the first search request, based on a determination that the decoded frame corresponding to the second frame for the second search request is not included in the one or more decoded frames.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to determine, based on configuration information about the video content, to allocate a specified number of buffers among the first buffers allocated for the decoding to a seek request.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to store the one or more decoded frames in the specified number of buffers among the first buffers allocated for the decoding.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to determine, based on the configuration information about the video content, a number of second buffers distinct from the first buffers and to be allocated for the seek request.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to store the one or more decoded frames in the determined number of second buffers.
  • the configuration information regarding the video content may include at least one of information regarding a mode for searching the video content, information regarding memory resources for the video content, a number of times the video content is played, an average playing time of the video content, a number of search requests regarding the video content, or a number of frames within the group of pictures (GOP) of the video content.
  • the plurality of frames may be sequentially arranged based on time.
  • the decoding may be performed sequentially from the reference frame to the first frame.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to store, in the memory, one or more decoded frames obtained by the decoding of the frames from the reference frame to the first frame.
  • the number of said one or more decoded frames may correspond to the number of buffers of said memory in which said one or more decoded frames are stored.
  • the video content may include a plurality of Groups of Plays (GOPs).
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to identify a GOP among the GOPs based on the first search request.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to identify a first frame among the plurality of frames within the GOP, which is related to the first search request.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to identify another GOP among the plurality of GOPs based on the second search request.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to perform decoding of frames from a reference frame to the second frame included in a plurality of other frames within the other GOP.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to remove the one or more decoded frames stored in the memory based on identifying the other GOP among the plurality of GOPs based on the second search request.
  • the instructions when individually or collectively executed by the at least one processor, may cause the electronic device to store one or more decoded other frames in the memory based on the decoding of the frames from the reference frame to the second frame within the plurality of other frames.
  • the first search request may indicate a first point in time during the playback section of the video content.
  • the second search request may indicate a second point in time during the playback section of the video content, which is distinct from the first point in time.
  • the first frame may be output at the first point in time during the playback section of the video content.
  • the second frame may be output at the second point in time during the playback section of the video content.
  • the reference frame may correspond to an I frame (intra-coded frame).
  • Each of at least one remaining frame, excluding the reference frame, among the one or more decoded frames may correspond to either a P frame (predicted frame) or a B frame (bi-directionally predicted frame).
  • a method performed by an electronic device may include an operation of identifying, based on a first seek request for video content, a first frame from among a plurality of frames in a group of pictures (GOP) of the video content, the first frame for the first seek request.
  • the method may include an operation of performing decoding of frames from a reference frame to the first frame from among the plurality of frames.
  • the method may include an operation of storing one or more decoded frames from among the decoded reference frame to the decoded first frame in buffers of a memory of the electronic device.
  • the method may include, based on a second search request distinct from the first search request, an operation of displaying a decoded frame corresponding to a second frame of the second search request through a display of the electronic device in association with a determination that the decoded frame corresponding to the second frame is included in at least one decoded frame stored in the buffers.
  • the method may include performing decoding on the second frame based on a determination that the decoded frame corresponding to the second frame for the second search request is not included in the one or more decoded frames, based on a second search request that is distinct from the first search request.
  • the method may include an operation of determining, based on configuration information regarding the video content, to allocate a specified number of buffers among the first buffers allocated for the decoding for a seek request.
  • the method may include an operation of storing the one or more decoded frames in the specified number of buffers among the first buffers allocated for the decoding.
  • the method may include determining a number of second buffers to be allocated for the search request, which are distinct from the first buffers, based on the configuration information regarding the video content.
  • the method may include storing the one or more decoded frames in the determined number of second buffers.
  • the plurality of frames may be sequentially arranged based on time.
  • the decoding may be performed sequentially from the reference frame to the first frame.
  • a non-transitory computer-readable storage medium may store one or more programs.
  • the one or more programs may include instructions that, when executed by a processor of an electronic device having a memory, cause a processor to identify, based on a first seek request for video content, a first frame from among a plurality of frames in a group of pictures (GOP) of video content, the first frame corresponding to the first seek request.
  • the one or more programs may include instructions that, when executed by the processor, cause the processor to perform decoding of frames from a reference frame to the first frame within the plurality of frames.
  • the one or more programs may include instructions that, when executed by the processor, cause the processor to store one or more decoded frames from the decoded reference frame to the decoded first frame in buffers of the memory.
  • the one or more programs may include instructions that, when executed by the processor, cause the display to display the decoded frame corresponding to the second frame, in association with a determination that the decoded frame corresponding to the second search request is included in at least one decoded frame stored in the buffers, based on a second search request distinct from the first search request.
  • Electronic devices may take various forms. Electronic devices may include, for example, portable communication devices (e.g., smartphones), computer devices, portable multimedia devices, portable medical devices, cameras, wearable devices, or home appliances. Electronic devices according to embodiments disclosed herein are not limited to the aforementioned devices.
  • first,” “second,” or “first” or “second” may be used merely to distinguish one component from another, and do not limit the components in any other respect (e.g., importance or order).
  • a component e.g., a first component
  • another component e.g., a second component
  • functionally e.g., a third component
  • module used may include a unit implemented in hardware, software, or firmware, and may be used interchangeably with terms such as logic, logic block, component, or circuit.
  • a module may be an integral component, or a minimum unit or part of such a component that performs one or more functions.
  • a module may be implemented in the form of an application-specific integrated circuit (ASIC).
  • ASIC application-specific integrated circuit
  • One embodiment of the present document may be implemented as software (e.g., a program (140)) including one or more instructions stored in a storage medium (e.g., an internal memory (136) or an external memory (138)) readable by a machine (e.g., an electronic device (101)).
  • a processor e.g., a processor (120)
  • the machine e.g., an electronic device (101)
  • the one or more instructions may include code generated by a compiler or code executable by an interpreter.
  • the machine-readable storage medium may be provided in the form of a non-transitory storage medium.
  • 'non-transitory' simply means that the storage medium is a tangible device and does not contain signals (e.g., electromagnetic waves), and the term does not distinguish between cases where data is stored semi-permanently or temporarily on the storage medium.
  • the method according to one embodiment disclosed in the present document may be provided as included in a computer program product.
  • the computer program product may be traded as a product between a seller and a buyer.
  • the computer program product may be distributed in the form of a machine-readable storage medium (e.g., a compact disc read only memory (CD-ROM)), or may be distributed online (e.g., downloaded or uploaded) via an application store (e.g., Play StoreTM) or directly between two user devices (e.g., smart phones).
  • an application store e.g., Play StoreTM
  • at least a portion of the computer program product may be temporarily stored or temporarily generated in a machine-readable storage medium, such as the memory of a manufacturer's server, an application store's server, or an intermediary server.
  • each component e.g., a module or a program of the above-described components may include one or more entities, and some of the entities may be separated and arranged in other components.
  • one or more components or operations of the aforementioned components may be omitted, or one or more other components or operations may be added.
  • a plurality of components e.g., a module or a program
  • the integrated component may perform one or more functions of each of the plurality of components identically or similarly to those performed by the corresponding component among the plurality of components prior to the integration.
  • the operations performed by a module, program, or other component may be executed sequentially, in parallel, iteratively, or heuristically, or one or more of the operations may be executed in a different order, omitted, or one or more other operations may be added.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

일 실시 예에 따르면, 전자 장치에 의해 수행되는 방법은, 비디오 콘텐트에 관한 제1 탐색 요청(seek request)에 기반하여, 상기 비디오 콘텐트(video content)를 위한 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 제1 프레임(frame)을 식별하는 동작을 포함한다. 상기 방법은, 상기 복수의 프레임들에 포함된 기준 프레임으로부터 상기 제1 프레임까지의 디코딩을 수행하는 동작을 포함한다. 상기 방법은, 상기 디코딩에 기반하여, 하나 이상의 디코딩된 프레임들(one or more decoded frames)을 상기 전자 장치의 메모리에 저장하는 동작을 포함한다.

Description

비디오 콘텐트를 재생하기 위한 전자 장치, 방법, 및 비일시적 컴퓨터 판독가능 저장매체
아래의 설명들은, 비디오 콘텐트를 재생하기 위한 전자 장치, 방법, 및 비일시적 컴퓨터 판독가능 저장매체에 관한 것이다.
전자 장치는 비디오 콘텐트를 재생할 수 있다. 전자 장치는 비디오 콘텐트를 재생하기 위해, 비디오 콘텐트에 포함된 프레임들을 디코딩할 수 있다. 비디오 콘텐트는 재생 구간(또는 재생 시간 구간) 내에서 재생될 수 있다. 전자 장치는 재생 구간 내에서 지시된 시점부터 비디오 콘텐트를 재생하기 위한 기능을 제공할 수 있다.
상술한 정보는 본 개시에 대한 이해를 돕기 위한 목적으로 하는 배경 기술(related art)로 제공될 수 있다. 상술한 내용 중 어느 것도 본 개시와 관련된 종래 기술(prior art)로서 적용될 수 있는지에 대하여 어떠한 주장이나 결정이 제기되지 않는다.
일 실시 예에 따르면, 전자 장치(electronic device)는, 적어도 하나의 저장 매체를 포함하고, 인스트럭션들을 저장하는 메모리, 및 처리 회로를 포함하는 적어도 하나의 프로세서를 포함할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 비디오 콘텐트에 관한 제1 탐색 요청(seek request)에 기반하여, 상기 비디오 콘텐트(video content)를 위한 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 제1 프레임(frame)을 식별하도록, 상기 전자 장치를 야기할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 복수의 프레임들에 포함된 기준 프레임으로부터 상기 제1 프레임까지의 디코딩을 수행하도록, 상기 전자 장치를 야기할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 디코딩에 기반하여, 하나 이상의 디코딩된 프레임들(one or more decoded frames)을 상기 메모리에 저장하도록, 상기 전자 장치를 야기할 수 있다.
일 실시 예에 따르면, 전자 장치에 의해 수행되는 방법은, 비디오 콘텐트에 관한 제1 탐색 요청(seek request)에 기반하여, 상기 비디오 콘텐트(video content)를 위한 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 제1 프레임(frame)을 식별하는 동작을 포함할 수 있다. 상기 방법은, 상기 복수의 프레임들에 포함된 기준 프레임으로부터 상기 제1 프레임까지의 디코딩을 수행하는 동작을 포함할 수 있다. 상기 방법은, 상기 디코딩에 기반하여, 하나 이상의 디코딩된 프레임들(one or more decoded frames)을 상기 전자 장치의 메모리에 저장하는 동작을 포함할 수 있다.
일 실시 예에 따르면, 비-일시적 컴퓨터 판독가능 저장 매체는 하나 이상의 프로그램들을 저장할 수 있다. 상기 하나 이상의 프로그램들은, 메모리를 가지는 전자 장치의 프로세서에 의해 실행될 시, 비디오 콘텐트에 관한 제1 탐색 요청(seek request)에 기반하여, 상기 비디오 콘텐트(video content)를 위한 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 제1 프레임(frame)을 식별하도록 야기하는 인스트럭션들을 포함할 수 있다. 상기 하나 이상의 프로그램들은, 상기 프로세서에 의해 실행될 시, 상기 복수의 프레임들에 포함된 기준 프레임으로부터 상기 제1 프레임까지의 디코딩을 수행하도록 야기하는 인스트럭션들을 포함할 수 있다. 상기 하나 이상의 프로그램들은, 상기 프로세서에 의해 실행될 시, 상기 디코딩에 기반하여, 하나 이상의 디코딩된 프레임들(one or more decoded frames)을 상기 메모리에 저장하도록 야기하는 인스트럭션들을 포함할 수 있다.
본 개시의 특정 실시예의 일 측면 및 기타 측면, 특징 및 이점들은 이하의 첨부 도면과 함께 취해진 다음 설명에서 더욱 명확해질 것이다:
도 1은 일 실시예에 따른 네트워크 환경 내의 전자 장치의 블록도이다.
도 2는, 전자 장치에서 디코딩이 반복되는 예를 도시한다.
도 3a는, 전자 장치의 간소화된 블록도의 예를 도시한다.
도 3b는, 탐색 요청에 따른 비디오 콘텐트의 재생을 위한 전자 장치에서 구성된 계층들의 예를 도시한다.
도 4는, 탐색 요청에 따른 프레임을 출력하기 위한 전자 장치의 동작에 관한 흐름도를 도시한다.
도 5a는, 하나 이상의 디코딩된 프레임들을 저장하기 위한 방식을 결정하기 위한 전자 장치의 동작에 관한 흐름도를 도시한다.
도 5b는, 하나 이상의 디코딩된 프레임들을 저장하기 위한 방식에 따라 설정되는 버퍼들의 예를 도시한다.
도 6은 제1 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 7은 제1 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 8은 제1 탐색 요청 및 제2 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 9a는 제1 탐색 요청 및 제2 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 9b는 제1 탐색 요청 및 제2 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 10은 제1 탐색 요청 및 제2 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 11a는, 탐색 요청을 위해 할당된 지정된 개수의 버퍼들에 오류가 발생한 경우, 전자 장치의 동작에 관한 흐름도를 도시한다.
도 11b는, 탐색 요청을 위해 할당된 버퍼들의 개수가 감소되는 예를 도시한다.
도 12a는 제2 모드에 기반하여, 탐색 요청을 위해 할당된 버퍼들의 예를 도시한다.
도 12b는 제2 모드에 기반하여, 탐색 요청을 할당된 추가적인 버퍼들의 예를 도시한다.
도 13a는, 탐색 요청을 위한 사용자 인터페이스의 예를 도시한다.
도 13b는, 탐색 요청을 위한 사용자 인터페이스의 예를 도시한다.
도 13c는, 탐색 요청을 위한 사용자 인터페이스의 예를 도시한다.
이하에서는 도면을 참조하여 본 개시의 실시예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 도면의 설명과 관련하여, 동일하거나 유사한 구성요소에 대해서는 동일하거나 유사한 참조 부호가 사용될 수 있다. 또한, 도면 및 관련된 설명에서는, 잘 알려진 기능 및 구성에 대한 설명이 명확성과 간결성을 위해 생략될 수 있다.
도 1은 일 실시예에 따른 네트워크 환경 내의 전자 장치의 블록도이다.
도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108) 중 적어도 하나와 통신할 수 있다. 일 실시 예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일 실시 예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 모듈(150), 음향 출력 모듈(155), 디스플레이 모듈(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 연결 단자(178), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 연결 단자(178))가 생략되거나, 하나 이상의 다른 구성요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성요소들 중 일부들(예: 센서 모듈(176), 카메라 모듈(180), 또는 안테나 모듈(197))은 하나의 구성요소(예: 디스플레이 모듈(160))로 통합될 수 있다.
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일 실시 예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 저장하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일 실시 예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서) 또는 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 신경망 처리 장치(NPU: neural processing unit), 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 예를 들어, 전자 장치(101)가 메인 프로세서(121) 및 보조 프로세서(123)를 포함하는 경우, 보조 프로세서(123)는 메인 프로세서(121)보다 저전력을 사용하거나, 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 디스플레이 모듈(160), 센서 모듈(176), 또는 통신 모듈(190))과 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일 실시 예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다. 일 실시 예에 따르면, 보조 프로세서(123)(예: 신경망 처리 장치)는 인공지능 모델의 처리에 특화된 하드웨어 구조를 포함할 수 있다. 인공지능 모델은 기계 학습을 통해 생성될 수 있다. 이러한 학습은, 예를 들어, 인공지능 모델이 수행되는 전자 장치(101) 자체에서 수행될 수 있고, 별도의 서버(예: 서버(108))를 통해 수행될 수도 있다. 학습 알고리즘은, 예를 들어, 지도형 학습(supervised learning), 비지도형 학습(unsupervised learning), 준지도형 학습(semi-supervised learning) 또는 강화 학습(reinforcement learning)을 포함할 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은, 복수의 인공 신경망 레이어들을 포함할 수 있다. 인공 신경망은 심층 신경망(DNN: deep neural network), CNN(convolutional neural network), RNN(recurrent neural network), RBM(restricted boltzmann machine), DBN(deep belief network), BRDNN(bidirectional recurrent deep neural network), 심층 Q-네트워크(deep Q-networks) 또는 상기 중 둘 이상의 조합 중 하나일 수 있으나, 전술한 예에 한정되지 않는다. 인공지능 모델은 하드웨어 구조 이외에, 추가적으로 또는 대체적으로, 소프트웨어 구조를 포함할 수 있다.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서 모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 모듈(150)은, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 모듈(150)은, 예를 들면, 마이크, 마우스, 키보드, 키(예: 버튼), 또는 디지털 펜(예: 스타일러스 펜)을 포함할 수 있다.
음향 출력 모듈(155)은 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 모듈(155)은, 예를 들면, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있다. 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일 실시 예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.
디스플레이 모듈(160)은 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 디스플레이 모듈(160)은, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일 실시 예에 따르면, 디스플레이 모듈(160)은 터치를 감지하도록 설정된 터치 센서, 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 압력 센서를 포함할 수 있다.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일 실시 예에 따르면, 오디오 모듈(170)은, 입력 모듈(150)을 통해 소리를 획득하거나, 음향 출력 모듈(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102))(예: 스피커 또는 헤드폰)를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일 실시 예에 따르면, 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다.
인터페이스(177)는 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜들을 지원할 수 있다. 일 실시 예에 따르면, 인터페이스(177)는, 예를 들면, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일 실시 예에 따르면, 연결 단자(178)는, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일 실시 예에 따르면, 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일 실시 예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일 실시 예에 따르면, 전력 관리 모듈(188)은, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성요소에 전력을 공급할 수 있다. 일 실시 예에 따르면, 배터리(189)는, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108)) 간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일 실시 예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제1 네트워크(198)(예: 블루투스, WiFi(wireless fidelity) direct 또는 IrDA(infrared data association)와 같은 근거리 통신 네트워크) 또는 제2 네트워크(199)(예: 레거시 셀룰러 네트워크, 5G 네트워크, 차세대 통신 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부의 전자 장치(104)와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성요소(예: 단일 칩)로 통합되거나, 또는 서로 별도의 복수의 구성요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 또는 인증할 수 있다.
무선 통신 모듈(192)은 4G 네트워크 이후의 5G 네트워크 및 차세대 통신 기술, 예를 들어, NR 접속 기술(new radio access technology)을 지원할 수 있다. NR 접속 기술은 고용량 데이터의 고속 전송(eMBB(enhanced mobile broadband)), 단말 전력 최소화와 다수 단말의 접속(mMTC(massive machine type communications)), 또는 고신뢰도와 저지연(URLLC(ultra-reliable and low-latency communications))을 지원할 수 있다. 무선 통신 모듈(192)은, 예를 들어, 높은 데이터 전송률 달성을 위해, 고주파 대역(예: mmWave 대역)을 지원할 수 있다. 무선 통신 모듈(192)은 고주파 대역에서의 성능 확보를 위한 다양한 기술들, 예를 들어, 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO(multiple-input and multiple-output)), 전차원 다중입출력(FD-MIMO(full dimensional MIMO)), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 또는 대규모 안테나(large scale antenna)와 같은 기술들을 지원할 수 있다. 무선 통신 모듈(192)은 전자 장치(101), 외부 전자 장치(예: 전자 장치(104)) 또는 네트워크 시스템(예: 제2 네트워크(199))에 규정되는 다양한 요구사항을 지원할 수 있다. 일 실시 예에 따르면, 무선 통신 모듈(192)은 eMBB 실현을 위한 Peak data rate(예: 20Gbps 이상), mMTC 실현을 위한 손실 Coverage(예: 164dB 이하), 또는 URLLC 실현을 위한 U-plane latency(예: 다운링크(DL) 및 업링크(UL) 각각 0.5ms 이하, 또는 라운드 트립 1ms 이하)를 지원할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부의 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일 실시 예에 따르면, 안테나 모듈(197)은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 안테나를 포함할 수 있다. 일 실시 예에 따르면, 안테나 모듈(197)은 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다. 이런 경우, 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부의 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시예에 따르면, 방사체 이외에 다른 부품(예: RFIC(radio frequency integrated circuit))이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
다양한 실시예에 따르면, 안테나 모듈(197)은 mmWave 안테나 모듈을 형성할 수 있다. 일 실시 예에 따르면, mmWave 안테나 모듈은 인쇄 회로 기판, 상기 인쇄 회로 기판의 제1 면(예: 아래 면)에 또는 그에 인접하여 배치되고 지정된 고주파 대역(예: mmWave 대역)을 지원할 수 있는 RFIC, 및 상기 인쇄 회로 기판의 제2 면(예: 윗 면 또는 측 면)에 또는 그에 인접하여 배치되고 상기 지정된 고주파 대역의 신호를 송신 또는 수신할 수 있는 복수의 안테나들(예: 어레이 안테나)을 포함할 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))을 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
일 실시 예에 따르면, 명령 또는 데이터는 제2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 외부의 전자 장치(102, 또는 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일 실시 예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부의 전자 장치들(102, 104, 또는 108) 중 하나 이상의 외부의 전자 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부의 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부의 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 모바일 에지 컴퓨팅(MEC: mobile edge computing), 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다. 전자 장치(101)는, 예를 들어, 분산 컴퓨팅 또는 모바일 에지 컴퓨팅을 이용하여 초저지연 서비스를 제공할 수 있다. 다른 실시예에 있어서, 외부의 전자 장치(104)는 IoT(internet of things) 기기를 포함할 수 있다. 서버(108)는 기계 학습 및/또는 신경망을 이용한 지능형 서버일 수 있다. 일 실시 예에 따르면, 외부의 전자 장치(104) 또는 서버(108)는 제2 네트워크(199) 내에 포함될 수 있다. 전자 장치(101)는 5G 통신 기술 및 IoT 관련 기술을 기반으로 지능형 서비스(예: 스마트 홈, 스마트 시티, 스마트 카, 또는 헬스 케어)에 적용될 수 있다.
일 실시 예에 따르면, 전자 장치(예: 전자 장치(101))는 비디오 콘텐트를 재생할 수 있다. 비디오 콘텐트는 복수의 프레임 세트들에 기반하여 구성될 수 있다. 하나의 프레임 세트는 복수의 프레임들을 포함할 수 있다. 복수의 프레임들은 I 프레임(intra-coded frame) 및 적어도 하나의 P 프레임(predicted frame)을 포함할 수 있다. 실시 예에 따라, 복수의 프레임들은, B 프레임(bi-directionally predicted frame)을 포함할 수도 있다. 이하 명세서에서, 복수의 프레임들은 I 프레임 및 적어도 하나의 P 프레임을 포함하는 것으로 설명될 것이다. I 프레임은 기준 프레임으로 참조될 수 있다. P 프레임은 예측 프레임으로 참조될 수 있다.
예를 들어, 비디오 콘텐트에서, 재생 구간이 설정될 수 있다. 전자 장치는 재생 구간 중 제1 시점(또는 제1 탐색 시점(seek time))부터 비디오 콘텐트를 재생하기 위한 탐색 요청을 식별할 수 있다. 전자 장치는 제1 시점에 관한 프레임 세트를 식별하고, 식별된 프레임 세트의 기준 프레임(또는 I 프레임)을 디코딩할 수 있다. 전자 장치는 제1 시점을 위한 프레임을 출력하기 위해 프레임 세트의 기준 프레임부터 순차적으로 제1 시점을 위한 프레임까지의 프레임들의 디코딩을 수행할 수 있다. 탐색 요청이 식별될 때마다, 전자 장치는 기준 프레임부터 탐색 요청에 따른 시점(또는 탐색 시점(seek time))을 위한 프레임까지의 상기 프레임들의 디코딩을 수행할 수 있다. 복수의 탐색 요청들이 식별되는 경우, 디코딩이 반복될 수 있다. 디코딩이 반복되는 경우, 자원(예: 전자 장치의 프로세싱 자원, 또는 시간 자원) 소모가 증가할 수 있다. 따라서, 이하 명세서에서는, 제1 탐색 요청에 기반하여, 디코딩된 프레임들을 저장하고, 제2 탐색 요청에 기반하여, 디코딩된 프레임들 중 하나를 출력하기 위한 기술적 특징이 설명될 것이다. 이하 명세서에서, 탐색 요청에 따른 시점은 탐색 요청에 따른 탐색 시점으로 참조될 수 있다.
도 2에서, 복수의 탐색 요청들이 식별되는 경우, 디코딩이 반복되는 구체적인 예가 설명될 것이다.
도 2는, 전자 장치에서 디코딩이 반복되는 예를 도시한다.
도 2를 참고하면, 전자 장치(101)의 프로세서(120)는 비디오 콘텐트를 재생할 수 있다. 비디오 콘텐트는 복수의 프레임 세트를 포함할 수 있다. 프로세서(120)는 탐색 요청을 식별할 수 있다. 탐색 요청은 사용자 또는 외부 전자 장치로부터 수신될 수 있다. 예를 들어, 비디오 콘텐트의 재생을 위한 소프트웨어 애플리케이션을 통해 비디오 콘텐트가 재생될 수 있다. 소프트웨어 애플리케이션은 비디오 콘텐트의 재생을 위한 사용자 인터페이스를 제공할 수 있다. 사용자 인터페이스는 비디오 콘텐트의 재생 구간에 기반하여 설정된 요소(예: 재생 바, 스크럽 바(scrub bar), 스크러버(scrubber) 탐색 바(seek bar), 프로그레스 바(progress bar) 또는 트랙 슬라이더(track slider))를 포함할 수 있다. 프로세서(120)는 상기 요소에 대한 입력에 기반하여, 탐색 요청을 식별할 수 있다. 일 예로, 프로세서(120)는 상기 요소는 재생 구간을 나타낼 수 있다. 프로세서(120)는, 상기 요소를 통해, 특정 시점을 지시하는 입력을 식별할 수 있다. 프로세서(120)는 상기 특정 시점을 지시하는 입력을 탐색 요청으로 식별할 수 있다.
상태(210)에서, 프로세서(120)는 제1 탐색 요청을 식별(또는 수신)할 수 있다. 프로세서(120)는 제1 탐색 요청에 기반하여, 재생 구간 내에서 제1 시점(또는 제1 탐색 시점)을 식별할 수 있다. 프로세서(120)는 제1 시점에 관한 프레임을 포함하는 프레임 세트(200)를 식별할 수 있다. 프레임 세트(200)는, I 프레임(201), 및 P 프레임(202) 내지 P 프레임(209)을 포함할 수 있다.
일 실시예에 따르면, I 프레임(201)은 비디오 콘텐트의 재생 구간 중, 1000 [ms] 내지 1032 [ms]에서 표시될 수 있다. P 프레임(202)은 비디오 콘텐트의 재생 구간 중, 1033 [ms] 내지 1065 [ms]에서 표시될 수 있다. P 프레임(203)은 비디오 콘텐트의 재생 구간 중, 1066 [ms] 내지 1099 [ms]에서 표시될 수 있다. P 프레임(204)은 비디오 콘텐트의 재생 구간 중, 1100 [ms] 내지 1132 [ms]에서 표시될 수 있다. P 프레임(205)은 비디오 콘텐트의 재생 구간 중, 1133 [ms] 내지 1165 [ms]에서 표시될 수 있다. P 프레임(206)은 비디오 콘텐트의 재생 구간 중, 1166 [ms] 내지 1199 [ms]에서 표시될 수 있다. P 프레임(207)은 비디오 콘텐트의 재생 구간 중, 1200 [ms] 내지 1232 [ms]에서 표시될 수 있다. P 프레임(208)은 비디오 콘텐트의 재생 구간 중, 1233 [ms] 내지 1265 [ms]에서 표시될 수 있다. P 프레임(209)은 비디오 콘텐트의 재생 구간 중, 1266 [ms] 내지 1300 [ms]에서 표시될 수 있다.
일 실시예에 따르면, 제1 탐색 요청에 따른 제1 시점은 1266 [ms](milli-second)일 수 있다. 프로세서(120)는 제1 시점에 기반하여, P 프레임(209)을 식별할 수 있다. 프로세서(120)는 P 프레임(209)을 출력(또는 제공, 표시)하기 위해 디코딩을 수행할 수 있다. 프로세서(120)는 P 프레임(209)을 디코딩하기 위해, I 프레임(201)부터 P 프레임(209)까지의 9 개의 프레임들을 디코딩할 수 있다. 프로세서(120)는 9 개의 프레임들을 디코딩하는 것에 기반하여, 디코딩된 P 프레임(209)을 획득할 수 있다. 프로세서(120)는 디코딩된 P 프레임(209)을 출력(또는 제공, 표시)할 수 있다.
일 실시 예에 따르면, 1 개의 프레임의 디코딩을 위해 소요되는 시간이 15 [ms]인 경우, P 프레임(209)을 디코딩(또는 출력)하기 위해, 135 [ms]가 소요될 수 있다. 프로세서(120)는 I 프레임(201)부터 P 프레임(209)까지의 프레임들의 디코딩을 순차적으로 수행할 수 있다. 프로세서(120)는 P 프레임(209)이 디코딩될 때까지 디코딩을 수행할 수 있다. 프로세서(120)는 I 프레임(201)부터 P 프레임(208)까지 디코딩을 수행하더라도, 디코딩된 프레임들을 디코더에게 돌려줄(return) 수 있다. 프로세서(120)는 I 프레임(201)부터 P 프레임(208)까지 디코딩을 수행하더라도, I 프레임(201)부터 P 프레임(208)까지의 디코딩된 프레임들을 버퍼에서 제거할 수 있다.
상태(220)에서, 제1 탐색 요청에 따라 P 프레임(209)이 출력(또는 제공, 표시)된 후, 프로세서(120)는 제2 탐색 요청을 식별할 수 있다. 프로세서(120)는 제2 탐색 요청에 기반하여, 재생 구간 내에서 제2 시점(또는 제2 탐색 시점(seek time))을 식별할 수 있다. 제2 시점에 관한 프레임을 포함하는 프레임 세트(200)를 식별할 수 있다. 제2 시점에 관한 프레임은, 제1 시점에 관한 프레임이 포함된 프레임 세트(200)에 포함될 수 있다.
일 실시 예에 따르면, 제2 탐색 요청에 따른 제2 시점(또는 제2 탐색 시점(seek time))은 1166 [ms]일 수 있다. 프로세서(120)는 제2 시점에 기반하여, P 프레임(206)을 식별할 수 있다. 프로세서(120)는 P 프레임(206)을 출력(또는 제공, 표시)하기 위해 디코딩을 수행할 수 있다. 프로세서(120)는 P 프레임(206)을 디코딩하기 위해, I 프레임(201)부터 P 프레임(206)까지의 6 개의 프레임들을 디코딩할 수 있다. 프로세서(120)는 6 개의 프레임들을 디코딩하는 것에 기반하여, 디코딩된 P 프레임(206)을 획득할 수 있다. 프로세서(120)는 디코딩된 P 프레임(206)을 출력(또는 제공, 표시)할 수 있다.
일 실시 예에 따르면, 1 개의 프레임의 디코딩을 위해 소요되는 시간이 15 [ms]인 경우, P 프레임(206)을 디코딩(또는 출력)하기 위해, 90 [ms]가 소요될 수 있다. 프로세서(120)는 I 프레임(201)부터 P 프레임(206)까지 프레임들의 디코딩을 순차적으로 수행할 수 있다. 프로세서(120)는 P 프레임(206)이 디코딩될 때까지 디코딩을 수행할 수 있다. 프로세서(120)는 I 프레임(201)부터 P 프레임(205)까지 디코딩을 수행하더라도, 디코딩된 프레임들을 디코더에게 돌려줄(return) 수 있다. 프로세서(120)는 I 프레임(201)부터 P 프레임(205)까지 디코딩을 수행하더라도, I 프레임(201)부터 P 프레임(205)까지의 디코딩된 프레임들을 버퍼에서 제거할 수 있다.
상태(230)에서, 제2 탐색 요청에 따라 P 프레임(206)이 출력(또는 제공, 표시)된 후, 프로세서(120)는 제3 탐색 요청을 식별할 수 있다. 프로세서(120)는 제3 탐색 요청에 기반하여, 재생 구간 내에서 제3 시점(또는 제3 탐색 시점(seek time))을 식별할 수 있다. 제3 시점에 관한 프레임을 포함하는 프레임 세트(200)를 식별할 수 있다. 제3 시점에 관한 프레임은, 제1 시점에 관한 프레임 및 제2 시점에 관한 프레임이 포함된 프레임 세트(200)에 포함될 수 있다.
일 실시 예에 따르면, 제3 탐색 요청에 따른 제3 시점은 1133 [ms]일 수 있다. 프로세서(120)는 제3 시점에 기반하여, P 프레임(205)을 식별할 수 있다. 프로세서(120)는 P 프레임(205)을 출력(또는 제공, 표시)하기 위해 디코딩을 수행할 수 있다. 프로세서(120)는 P 프레임(205)을 디코딩하기 위해, I 프레임(201)부터 P 프레임(205)까지의 5 개의 프레임들을 디코딩할 수 있다. 프로세서(120)는 5 개의 프레임들을 디코딩하는 것에 기반하여, 디코딩된 P 프레임(205)을 획득할 수 있다. 프로세서(120)는 디코딩된 P 프레임(205)을 출력(또는 제공, 표시)할 수 있다.
일 실시 예에 따르면, 1 개의 프레임의 디코딩을 위해 소요되는 시간이 15 [ms]인 경우, P 프레임(205)을 디코딩(또는 출력)하기 위해, 75 [ms]가 소요될 수 있다. 프로세서(120)는 I 프레임(201)부터 P 프레임(205)까지의 프레임들의 디코딩을 순차적으로 수행할 수 있다. 프로세서(120)는 P 프레임(205)이 디코딩될 때까지 디코딩을 수행할 수 있다. 프로세서(120)는 I 프레임(201)부터 P 프레임(204)까지 디코딩을 수행하더라도, 디코딩된 프레임들을 디코더에게 돌려줄(return) 수 있다. 프로세서(120)는 I 프레임(201)부터 P 프레임(204)까지 디코딩을 수행하더라도, I 프레임(201)부터 P 프레임(204)까지의 디코딩된 프레임들을 버퍼에서 제거할 수 있다.
상태(210)에서, 프로세서(120)는 P 프레임(209)의 디코딩을 위해, I 프레임(201)부터 P 프레임(209)까지의 프레임들의 디코딩을 수행할 수 있다. 상태(220)에서, 프로세서(120)는 P 프레임(206)의 디코딩을 위해, I 프레임(201)부터 P 프레임(206)까지의 프레임들의 디코딩을 수행할 수 있다. 상태(230)에서, 프로세서(120)는 P 프레임(205)의 디코딩을 위해, I 프레임(201)부터 P 프레임(205)까지의 프레임들의 디코딩을 수행할 수 있다.
상술한 바와 같이, 역방향의 탐색 요청에 대한 디코딩을 수행할 때마다, 동일한 프레임들이 반복적으로 디코딩된다. 이하에서는, 디코딩된 프레임들을 버퍼에 저장한 후, 역방향의 탐색 요청에 기반하여, 버퍼에 저장되고, 디코딩된 프레임들을 출력하기 위한 기술적 특징이 후술될 것이다.
도 3a는, 전자 장치의 간소화된 블록도의 예를 도시한다.
도 3b는, 탐색 요청에 따른 비디오 콘텐트의 재생을 위한 전자 장치에서 구성된 계층들의 예를 도시한다.
도 3a를 참고하면, 전자 장치(300)는 비디오 콘텐트의 재생을 위해 사용될 수 있다. 예를 들어, 전자 장치(300)는 도 1의 전자 장치(101)의 컴포넌트들 중 적어도 일부 또는 전부를 포함할 수 있다. 예를 들어, 전자 장치(300)는 도 1의 전자 장치(101)에 상응할 수 있다.
일 실시 예에 따르면, 전자 장치(300)는 프로세서(310), 메모리(320), 디스플레이(330), 및/또는 하드웨어 코덱(340)을 포함할 수 있다. 실시 예에 따라, 전자 장치(300)는 프로세서(310), 메모리(320), 디스플레이(330), 및/또는 하드웨어 코덱(340) 중 적어도 하나를 포함할 수 있다. 예를 들어, 프로세서(310), 메모리(320), 디스플레이(330), 및 하드웨어 코덱(340) 중 적어도 일부는 실시 예에 따라 생략될 수 있다.
일 실시 예에 따르면, 메모리(320)에 포함된 코덱부(360)가 하드웨어 코덱(340)의 기능을 수행하는 경우, 전자 장치(300)는 하드웨어 코덱(340)을 포함하지 않을 수 있다. 예를 들어, 하드웨어 코덱(340)이 메모리(320)에 포함된 코덱부(360)의 기능을 수행하는 경우, 전자 장치(300)는 코덱부(360)를 포함하지 않을 수 있다. 일 실시 예에 따르면, 전자 장치(300)는 하드웨어 코덱(340) 및 코덱부(360)를 모두 포함할 수도 있다.
일 실시 예에 따르면, 프로세서(310)는 메모리(320), 디스플레이(330), 및/또는 하드웨어 코덱(340)과 작동적으로(operatively 또는 operably) 결합하거나(coupled with), 연결될(connect with) 수 있다. 프로세서(310)가 메모리(320), 디스플레이(330), 및/또는 하드웨어 코덱(340)과 작동적으로 결합하거나, 연결된다는 것은, 프로세서(310)가 메모리(320), 디스플레이(330), 및/또는 하드웨어 코덱(340)을 제어할 수 있음을 의미할 수 있다. 예를 들어, 메모리(320), 디스플레이(330), 및/또는 하드웨어 코덱(340)은 프로세서(310)에 의해 제어될 수 있다.
일 실시 예에 따르면, 프로세서(310)는 도 1의 프로세서(120)의 적어도 일부를 포함하거나, 프로세서(120)의 적어도 일부에 상응할 수 있다. 예를 들어, 프로세서(310)는, AP(application processor) 및/또는 CP(communication processor)를 포함하는 하나 이상의 프로세서들을 포함할 수 있다. 예를 들어, 프로세서(310)는, SoC(system on chip)와 같은 단일 칩으로 구현될 수도 있고, 다수의 칩들로 구현될 수도 있다. 예를 들어, 프로세서(310)는, 하나의 집적 회로(integrated circuit)로 구현될 수도 있고, 다수의 집적 회로들로 구현될 수도 있다. 예를 들면, 프로세서(310)는, 전자 장치(300) 내에서 배열될 수도 있다.
일 실시 예에 따르면, 전자 장치(300)의 디스플레이(330)는 사용자에게 시각화된 정보(예: 화면)를 출력할 수 있다. 예를 들어, 디스플레이(330)는, GPU(graphic processing unit)와 같은 컨트롤러에 의해 제어되어, 사용자에게 시각화된 정보(visualized information)를 출력할 수 있다. 디스플레이(330)는 LCD(liquid crystal display), PDP(plasma display panel) 및/또는 하나 이상의 LED(light emitting diode)를 포함할 수 있다. 상기 LED는 OLED(organic LED)를 포함할 수 있다. 디스플레이(330)는 FPD(flat panel display) 및/또는 전자 종이(electronic paper)를 포함할 수 있다. 실시예가 이에 제한되지 않으며, 디스플레이(330)는 적어도 부분적으로 휘어진 형태를 가지거나, 변형가능한(deformable) 형태를 가질 수 있다. 변형가능한 형태를 가지는 디스플레이(330)가 플렉서블 디스플레이로 지칭될 수 있다.
일 실시 예에 따르면, 전자 장치(300)의 메모리(320)는 프로세서(310)에 입력 및/또는 출력되는 데이터 및/또는 인스트럭션을 저장하기 위한 회로, 및/또는 저장 매체를 포함할 수 있다. 메모리(320)는, 예를 들어, RAM(random-access memory)과 같은 휘발성 메모리(volatile memory) 및/또는 ROM(read-only memory)과 같은 비휘발성 메모리(non-volatile memory)를 포함할 수 있다. 비휘발성 메모리는 스토리지로 지칭될 수 있다. 휘발성 메모리는, 예를 들어, DRAM(dynamic RAM), SRAM(static RAM), Cache RAM, PSRAM (pseudo SRAM) 중 적어도 하나를 포함할 수 있다. 비휘발성 메모리는, 예를 들어, PROM(programmable ROM), EPROM (erasable PROM), EEPROM (electrically erasable PROM), 플래시 메모리, 하드디스크, 컴팩트 디스크, SSD(solid state drive), eMMC(embedded multi media card) 중 적어도 하나를 포함할 수 있다.
일 실시 예에 따르면, 메모리(320)는 도 1의 메모리(130)의 적어도 일부를 포함하거나 도 1의 메모리(130)의 적어도 일부에 상응할 수 있다. 예를 들어, 메모리(320)는, 단일 칩으로 구현될 수도 있고, 다수의 칩들로 구현될 수도 있다. 예를 들어, 메모리(320)는, 하나의 집적 회로로 구현될 수도 있고, 다수의 집적 회로들로 구현될 수도 있다. 예를 들어, 메모리(320)는, 전자 장치(101) 내에서 배열될 수도 있다.
일 실시 예에 따르면, 전자 장치(300)의 프로세서(310)는, 전자 장치(300) 내 메모리(320)의 인스트럭션들을 실행하여, 상기 인스트럭션들에 의해 나타나는 기능, 및/또는 동작을 수행할 수 있다. 예를 들어, 전자 장치(300)가 적어도 하나의 프로세서를 포함하는 경우, 상기 적어도 하나의 프로세서는 상기 인스트럭션들을 집합적으로, 또는 개별적으로 실행하도록, 구성될 수 있다.
일 실시 예에 따르면,상기 인스트럭션들은, 메모리(320) 내에 저장된 하나 이상의 프로그램들(350)(예: 디먹서(351), 재생기(352), 출력기(353), 코덱부(360), 저장 방법 결정기(354), 및 저장 관리기(355)) 내에 포함될 수 있다.
일 실시 예에 따르면, 디먹서(351), 재생기(352), 출력기(353), 코덱부(360), 저장 방법 결정기(354), 및 저장 관리기(355) 각각은 인스트럭션들을 포함할 수 있다. 일 실시 예에 따르면, 디먹서(351), 재생기(352), 출력기(353), 코덱부(360), 저장 방법 결정기(354), 및 저장 관리기(355) 각각은 프로세서(310)에 의해 실행될 수 있다.
일 실시 예에 따르면, 재생기(352)는 디먹서(351), 출력기(353), 코덱부(360), 저장 방법 결정기(354), 및 저장 관리기(355)의 동작을 제어할 수 있다. 예를 들어, 재생기(352)기는 디먹서(351), 출력기(353), 코덱부(360), 저장 방법 결정기(354), 및 저장 관리기(355)의 동작을 제어함으로써, 비디오 콘텐트의 재생을 제어할 수 있다. 일 예로, 재생기(352)는 디먹서(351), 출력기(353), 코덱부(360), 저장 방법 결정기(354), 및 저장 관리기(355)의 동작을 제어함으로써, 비디오 콘텐트에 관한 탐색 요청을 처리할 수 있다.
일 실시 예에 따르면, 재생기(352)는, 비디오 콘텐트의 재생과 관련된 입력을 획득(또는 식별)할 수 있다. 예를 들면, 재생기(352)는, 비디오 콘텐트의 재생, 또는 재생 중지를 위한 입력을 획득할 수 있다. 예를 들면, 재생기(352)는, 비디오 콘텐트의 재생 속도를 조절하기 위한 입력을 획득할 수 있다. 예를 들면, 재생기(352)는 탐색 요청을 획득할 수 있다. 탐색 요청은 비디오 콘텐트의 재생 위치를 변경하기 위한 요청(또는 입력)을 의미할 수 있다.
일 실시 예에 따르면, 디먹서(351)는 비디오 콘텐트를 위한 파일(또는 유/무선 통신을 통해 획득된 스트림)을 디먹싱할 수 있다. 예를 들어, 디먹서(351)는 파일을 파싱함으로써, 비디오 스트림 및/또는 오디오 스트림을 획득할 수 있다. 예를 들어, 디먹서(351)는 먹싱된 형태에 따른 적어도 하나의 디먹서를 포함할 수 있다. 디먹서(351)는 MP4 디먹서, AVI 디먹서, 및/또는 MKV(Matroska Video) 디먹서 중 적어도 하나를 포함할 수 있다. 다만, 이에 한정되는 것은 아니다. 예를 들어, 디먹서(351)는 MP4 디먹서, AVI 디먹서, 및/또는 MKV 디먹서 외에도 다른 타입의 디먹서를 포함할 수 있다.
일 실시 예에서, 디먹서(351)는 비디오 콘텐트에서 지정된 프레임의 위치를 식별할 수 있다. 디먹서(351)는, 비디오 콘텐트의 복수의 프레임 세트들 중 재생 시점에 관한 프레임 세트를 식별할 수 있다. 디먹서(351)는 지정된 프레임의 위치를 식별하는 것에 기반하여, 프레임 세트를 식별할 수 있다. 디먹서(351)는 지정된 프레임을 포함하는 프레임 세트를 식별할 수 있다.
일 실시 예에 따르면, 프레임 세트는 GOP(group of pictures)로 참조될 수 있다. 예를 들어, 프레임 세트는 I 프레임으로부터, 다음 I 프레임 이전의 P 프레임까지의 복수의 프레임들로 구성될 수 있다. 예를 들어, 디먹서(351)는 식별된 프레임 세트 내의 I 프레임을 식별할 수 있다.
일 실시 예에 따르면, 코덱부(360)는 인코더(361) 및 디코더(362)를 포함할 수 있다. 예를 들어, 인코더(361)는 비디오 스트림을 압축할 수 있다. 예를 들어, 디코더(362)는 압축된 비디오 스트림에 대한 압축 해제를 수행할 수 있다. 디코더(362)는 압축된 비디오 스트림에 대한 압축 해제에 기반하여, 지정된 포맷(예: YUV 포맷)의 비디오 스트림을 획득할 수 있다. 실시 예에 따라, 전자 장치(300)가 하드웨어 코덱(340)을 포함하는 경우, 코덱부(360)의 일부 또는 전부가 하드웨어 코덱(340)에 포함될 수 있다.
일 실시 예에 따르면, I 프레임은 다른 프레임을 참조하지 않고 디코딩 될 수 있다. P 프레임은 앞선 P 프레임 및/또는 I 프레임을 참조하여 디코딩될 수 있다. 하지만 이에 제한되지 않는다. 실시 예에 따라, 복수의 프레임들은 B(bi-directional prediction) 프레임을 포함할 수 있다. 일 실시 예에서, B 프레임은 뒤의 P 프레임 및/또는 앞의 I 프레임을 참조하여 디코딩될 수 있다. 일 실시 예에서, B 프레임은 자신의 GOP 내의 뒤의 B 또는 P 프레임 및/또는 앞의 I 프레임을 참조하여 디코딩될 수 있다.
일 실시 예에 따르면, 출력기(353)는 지정된 포맷의 비디오 스트림을 획득하고, 지정된 포맷(예: YUV 포맷)의 비디오 스트림을 디스플레이(330)를 통해 출력할 수 있다.
일 실시 예에 따르면, 저장 방법 결정기(354)는 탐색 요청(예: 역방향의 탐색 요청)에 따라, 재생기에서 확보할 수 있는 버퍼 개수(예: 최소한의 버퍼 개수)를 식별할 수 있다. 저장 방법 결정기(354)는, 식별된 버퍼 개수에 기반하여, 하나 이상의 디코딩된 프레임들을 저장하기 위한 방식을 결정할 수 있다.
일 실시 예에 따르면, 하나 이상의 디코딩된 프레임들을 저장하기 위한 방식은 비디오 콘텐트를 탐색하기 위한 모드들인 제1 모드 및 제2 모드에 따라 변경될 수 있다. 예를 들어, 제1 모드 및 제2 모드는 비디오 콘텐트에 관한 설정 정보에 기반하여, 설정될 수 있다. 비디오 콘텐트에 관한 설정 정보는 비디오 콘텐트를 탐색하기 위한 모드에 관한 정보, 비디오 콘텐트를 위한 메모리 자원에 관한 정보, 비디오 콘텐트의 재생 횟수, 비디오 콘텐트의 평균 재생 시간, 비디오 콘텐트에 관한 탐색 요청들의 횟수, 또는 비디오 콘텐트의 GOP(group of pictures) 내의 프레임들의 개수 중 적어도 하나를 포함할 수 있다.
일 실시 예에 따르면, 제1 모드는 디코더(362)의 효율적인 메모리 관리 및 사용을 위해 설정될 수 있다. 예를 들어, 제1 모드에서, 디코더(362)를 위해 할당된 메모리 영역이 공유될 수 있다. 디코더(362)를 위해 할당된 메모리 영역이 공유되므로, 디코더(362)를 위해 할당된 적어도 하나의 버퍼가 재생기(352)에서 사용될 수 있다. 디코더(362)를 위해 할당된 메모리 영역이 공유되므로, 디코더(362)를 위해 할당된 적어도 하나의 버퍼가 출력기(353)에서 사용될 수 있다. 따라서, 디코딩된 비디오는 디스플레이(330)까지 복사되지 않고 출력될 수 있다. 따라서, 제1 모드에서, 메모리가 최소한으로 할당되고, 프로세서(310)(예: CPU)에 높은 부하가 발생되는 메모리(또는 버퍼) 복사 과정이 수행되지 않을 수 있다.
일 실시 예에 따르면, 제2 모드에서, 재생기(352)는 디코딩된 프레임들을 출력하기 위해 디코더(362)에 할당된 버퍼들을 복사할 수 있다. 재생기(352)가 디코더(362)에 할당된 버퍼들을 복사함에 따라, 버퍼들의 개수가 제한되지 않을 수 있다.
일 실시 예에 따르면, 제1 모드에서 디코딩을 위해 할당된 제1 버퍼들 중, 지정된 개수의 버퍼들이 탐색 요청을 위해 할당될 수 있다. 제1 모드에서, 프로세서(310)는 디코딩을 위해 미리 할당된 제1 버퍼들 중, 지정된 개수의 버퍼들을 탐색 요청을 위해 사용할 수 있다. 미리 할당된 제1 버퍼들 중, 지정된 개수의 버퍼들이 탐색 요청을 위해 사용되므로, 탐색 요청을 위해 사용되는 버퍼의 개수가 제한될 수 있다.
일 실시 예에 따르면, 디코딩을 위해 할당된 제1 버퍼들은 하기와 같이 구성될 수 있다. 제1 버퍼들은, 코덱부(360)에서 복호화를 위해 필요한 버퍼들, 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 버퍼들, 및 출력기(353)에서 필요한 버퍼들을 포함할 수 있다. 예를 들어, 제1 버퍼들의 개수는 코덱부(360)에서 복호화를 위해 필요한 버퍼들의 최소 개수, 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 버퍼들의 개수, 및 출력기(353)에서 필요한 버퍼들의 최소 개수의 합으로 설정될 수 있다. 제1 모드에서, 제1 버퍼들 중, 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 버퍼들이 탐색 요청을 위해 할당될 수 있다. 프로세서(310)는 제1 버퍼들 중, 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 버퍼들을 탐색 요청을 위해 할당할 수 있다.
일 실시 예에 따르면, 제2 모드에서, 재생기(352)가 디코더(362)에 할당된 버퍼들을 복사함에 따라, 탐색 요청을 위한 버퍼들이 메모리(320)에서 할당될 수 있다. 따라서, 제2 모드에 따라 탐색 요청을 위해 할당된 버퍼들의 개수는, 제1 모드에 따라 탐색 요청을 위해 사용되는 버퍼들의 개수보다 클 수 있다. 제2 모드에서, 더블 버퍼링(또는 트리플 버퍼링)을 통해 탐색 요청을 위해 할당된 버퍼들의 개수가 증가될 수 있다. 더블 버퍼링의 구체적인 예는 도 12b에서 후술될 것이다.
일 실시 예에 따르면, 저장 관리기(355)는 탐색 요청(예: 역방향의 탐색 요청)이 식별되는 경우, 저장 방법 결정기(354)를 통해 결정된, 하나 이상의 디코딩된 프레임들을 저장하기 위한 방식에 따라, 탐색 요청을 위한 버퍼들을 획득하고, 하나 이상의 디코딩된 프레임들을 저장할 수 있다. 탐색 요청에 관한 프레임에 대응하는 디코딩된 프레임이 버퍼에 저장된 경우, 저장 관리기(355)는, 디코딩된 프레임을 즉시 출력할 수 있다.
일 실시 예에 따르면, 도시하지는 않았으나, 메모리(320)는 재생 위치 표시부(예: 도 3b의 재생 위치 표시부(381))를 위한 인스트럭션들을 더 포함할 수 있다 재생 위치 표시부는, 재생기(352)부터 현재 재생 중인 시점, 비디오 콘텐트의 재생 구간의 길이, 재생 시점을 나타내기 위한 요소(예: 재생 바, 스크럽 바(scrub bar), 스크러버(scrubber) 탐색 바(seek bar), 프로그레스 바(progress bar) 또는 트랙 슬라이더(track slider))를 표시할 수 있다. 예를 들어, 재생 위치 표시부는 탐색 요청을 사용자로부터 수신하고, 탐색 요청을 재생기(352)에게 전달(또는 제공)할 수 있다.
일 실시 예에 따르면, 디먹서(351), 재생기(352), 출력기(353), 코덱부(360), 저장 방법 결정기(354), 및 저장 관리기(355) 중 적어도 하나는 하드웨어(예: 프로세서, IC(integrated circuit) 칩, 그래픽 처리 장치(graphic processing unit, GPU))으로 구성될 수 있다. 하지만 이에 제한되지 않는다. 디먹서(351), 재생기(352), 출력기(353), 코덱부(360), 저장 방법 결정기(354), 및 저장 관리기(355) 중 적어도 하나는 소프트웨어 모듈(또는, 프로그램)으로 구현될 수 있다. 실시 예에 따라, 코덱부(360)의 적어도 일부 기능이 하드웨어 코덱(340)에서 수행될 수 있다.
도 3b를 참고하면, 탐색 요청에 따른 비디오 콘텐트의 재생을 위한 전자 장치(300)에서 구성된 계층들은 하드웨어 계층(391), 프레임워크 계층(392), 및 애플리케이션 계층(393)을 포함할 수 있다. 예를 들어, 하드웨어 계층(391)은 메모리(320), 디스플레이(330), 및 하드웨어 코덱(340)을 포함할 수 있다. 예를 들어, 프레임워크 계층(392)은 디먹서(351), 재생기(352), 출력기(353), 저장 방법 결정기(354), 저장 관리기(355), 및 디코더(362)를 포함할 수 있다. 예를 들어, 애플리케이션 계층(393)은 재생 위치 표시부(381)를 포함할 수 있다.
일 실시 예에 따르면, 비디오 콘텐트가 재생되는 경우, 재생기(352)는 디먹서(351)를 통해 비디오 스트림을 획득할 수 있다. 재생기(352)는 획득된 비디오 스트림(예: 프레임들)을 디코더(362)에게 제공(또는 전달)할 수 있다. 재생기(352)는 디코더(362)로부터 압축이 해제된 비디오 스트림(예: 프레임들)을 획득할 수 있다. 재생기(352)는 압축이 해제된 비디오 스트림(예: 디코딩된 프레임들)을 출력기(353)에게 제공(또는 전달)할 수 있다. 출력기(353)는 디스플레이(330)를 통해 비디오 콘텐트를 표시할 수 있다. 재생 위치 표시부(381)는 재생기(352)로부터 현재 재생 중인 시점에 대한 정보를 획득할 수 있다. 재생 위치 표시부(381)는 비디오 콘텐트를 위한 재생 구간 내에서, 현재 재생 중인 시점을 사용자 인터페이스를 통해 표시할 수 있다.
일 실시 예에 따르면, 탐색 요청이 식별되는 경우, 재생기(352)는 디먹서(351)에게 탐색 요청에 따른 시점에 관한 비디오 스트림을 요청할 수 있다. 재생기(352)는 디먹서(351)로부터 탐색 요청에 따른 시점에 관한 비디오 스트림을 획득할 수 있다. 재생기(352)는 획득된 비디오 스트림(예: 프레임들)을 디코더(362)에게 제공(또는 전달)할 수 있다. 재생기(352)는 디코더(362)로부터 압축이 해제된 비디오 스트림(예: 프레임들)을 획득할 수 있다. 재생기(352)는 압축이 해제된 비디오 스트림(예: 디코딩된 프레임들)을 출력기(353)에게 제공(또는 전달)할 수 있다. 출력기(353)는 디스플레이(330)를 통해 비디오 콘텐트를 표시할 수 있다. 재생 위치 표시부(381)는 재생기(352)로부터 현재 재생 중인 시점에 대한 정보를 획득할 수 있다. 재생 위치 표시부(381)는 비디오 콘텐트를 위한 재생 구간 내에서, 현재 재생 중인 시점을 사용자 인터페이스를 통해 표시할 수 있다. 예를 들어, 재생기(532)는 디먹서(351), 디코더(362), 출력기(353), 저장 방법 결정기(354), 및/또는 저장 관리기(355)를 사용하여 비디오 콘텐트를 재생하고 위치이동 명령을 처리할 수 있다. 예를 들어, 재생 위치 표시부(381)는 재생기(532)로부터 현재 재생 중인 위치, 재생 중인 비디오 콘텐트(예: 미디어)의 길이, 비디오 콘텐트의 재생 구간에 기반하여 설정된 요소(예: 재생 바, 스크럽 바(scrub bar), 스크러버(scrubber) 탐색 바(seek bar), 프로그레스 바(progress bar) 또는 트랙 슬라이더(track slider))의 위치를 표시할 수 있다. 재생 위치 표시부(381)는 재생 위치를 이동하기 위한 요청이 사용자로부터 수신되는 것에 기반하여, 재생기(532)에게 상기 요청을 전달할 수 있다.
일 실시 예에 따르면, 탐색 요청에 따른 시점에 관한 프레임에 대응하는 디코딩된 프레임이 버퍼에 저장된 경우, 저장 관리기(355)는 디코딩된 프레임을 재생기(352)에게 제공할 수 있다. 재생기(352)는 디코딩된 프레임을 출력기(353)에게 제공할 수 있다. 출력기(353)는 디스플레이(330)를 통해 탐색 요청에 따른 시점에 관한 프레임을 표시할 수 있다.
이하 명세서에서는, 설명의 편의를 위해, 디먹서(351), 재생기(352), 출력기(353), 코덱부(360), 저장 방법 결정기(354), 및 저장 관리기(355)의 동작이 프로세서(310)에 의해 수행되는 것으로 설명될 것이다. 예를 들어, 프로세서(310)는 디먹서(351), 재생기(352), 출력기(353), 코덱부(360), 저장 방법 결정기(354), 및 저장 관리기(355) 중 적어도 하나를 이용하여, 탐색 요청에 따른 프레임을 출력하기 위한 적어도 하나의 동작을 수행할 수 있다.
도 4는, 탐색 요청에 따른 프레임을 출력하기 위한 전자 장치의 동작에 관한 흐름도를 도시한다. 이하 실시 예에서 각 동작들은 순차적으로 수행될 수도 있으나, 반드시 순차적으로 수행되는 것은 아니다. 예를 들어, 각 동작들의 순서가 변경될 수도 있으며, 적어도 두 동작들이 병렬적으로 수행될 수도 있다.
도 4를 참고하면, 동작 410에서, 전자 장치(300)의 프로세서(310)는 제1 탐색 요청에 기반하여, 비디오 콘텐트를 위한 복수의 프레임들 중 제1 프레임을 식별할 수 있다. 예를 들어, 프로세서(310)는 비디오 콘텐트에 관한 제1 탐색 요청에 기반하여, 비디오 콘텐트를 위한 복수의 프레임들 중 제1 탐색 요청에 관한 제1 프레임을 식별할 수 있다.
일 실시 예에 따르면, 비디오 콘텐트는 복수의 프레임 세트들을 포함할 수 있다. 프레임 세트는 GOP로 참조될 수 있다. 예를 들어, 복수의 프레임 세트들 각각은 복수의 프레임들을 포함할 수 있다. 예를 들어, 프로세서(310)는 복수의 프레임 세트들 중 제1 탐색 요청에 따른 프레임 세트를 식별할 수 있다. 프로세서(310)는 식별된 프레임 세트 내의 복수의 프레임들 중, 제1 탐색 요청에 관한 제1 프레임을 식별할 수 있다.
일 실시 예에 따르면, 복수의 프레임들은 시간에 기반하여 순차적으로 배열될(sequentially arranged) 수 있다. 복수의 프레임들은 기준 프레임(예: I 프레임) 및 적어도 하나의 예측 프레임(예: P 프레임)을 포함할 수 있다. 복수의 프레임들 각각은 비디오 콘텐트의 재생 구간의 일부를 구성할 수 있다. 복수의 프레임들이 연속적으로 출력됨에 따라, 비디오 콘텐트의 재생 구간의 일부가 출력될 수 있다. 일 예로, 제1 탐색 요청은 비디오 콘텐트의 재생 구간 중 제1 시점(또는 제1 탐색 시점)을 지시할 수 있다. 제1 프레임은 비디오 콘텐트의 재생 구간 중 제1 시점에서 출력될 수 있다. 예를 들어, 제1 프레임은 제1 시점부터 제1 프레임에 따른 듀레이션(duration) 동안 출력될 수 있다.
동작 420에서, 프로세서(310)는 복수의 프레임들 내의 기준 프레임으로부터 제1 프레임까지의 프레임들의 디코딩을 수행할 수 있다. 예를 들어, 프로세서(310)는 제1 탐색 요청에 관한 제1 프레임을 식별하는 것에 기반하여, 복수의 프레임들 내의 기준 프레임으로부터 제1 프레임까지의 프레임들의 디코딩을 수행할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 디코더(362)를 이용하여, 기준 프레임으로부터 제1 프레임까지 순차적으로 디코딩을 수행할 수 있다. 디코딩은, 기준 프레임으로부터 제1 프레임까지 순차적으로 수행될 수 있다.
동작 430에서, 프로세서(310)는 하나 이상의 디코딩된 프레임들을 저장할 수 있다. 예를 들어, 프로세서(310)는 디코딩에 기반하여, 하나 이상의 디코딩된 프레임들을 메모리(예: 버퍼들)에 저장할 수 있다. 예를 들어, 프로세서(310)는 디코딩된 프레임들을 저장하기 위해, 저장 가능한 버퍼들을 식별할 수 있다. 프로세서(310)는 저장 가능한 버퍼들의 개수가 충분한 경우, 디코딩된 프레임들을 저장할 수 있다. 디코딩된 프레임들을 저장하기 위해, 저장 가능한 버퍼들의 개수가 부족한 경우, 프로세서(310)는 할당된 버퍼들 중 가장 과거의 프레임을 순차적으로 삭제함으로써, 디코딩된 프레임들을 저장할 수 있다.
일 실시 예에 따르면, 하나 이상의 디코딩된 프레임들은 지정된 버퍼들에 저장될 수 있다. 예를 들어, 지정된 버퍼들은 비디오 콘텐트를 탐색하기 위한 모드들에 따라 변경될 수 있다. 비디오 콘텐트를 탐색하기 위한 모드들은 제1 모드 및 제2 모드를 포함할 수 있다. 예를 들어, 비디오 콘텐트를 탐색하기 위한 모드는 비디오 콘텐트에 관한 설정 정보에 기반하여, 결정될 수 있다. 지정된 버퍼들을 결정하기 위한 프로세서(310)의 구체적인 동작은 도 5a에서 후술될 것이다.
일 실시 예에 따르면, 제1 모드에서, 디코더(362)를 위해 할당된 메모리 영역이 공유될 수 있다. 디코더(362)를 위해 할당된 메모리 영역이 공유되므로, 디코더(362)를 위해 할당된 적어도 하나의 버퍼가 재생기(352)에서 사용될 수 있다. 디코더(362)를 위해 할당된 메모리 영역이 공유되므로, 디코더(362)를 위해 할당된 적어도 하나의 버퍼가 비디오 콘텐트가 출력기(353)에서 사용될 수 있다. 예를 들어, 제1 모드는 무복사 모드(zero copy mode) 또는 공유된 버퍼 모드(shared buffer mode)로 참조될 수 있다.
일 실시 예에 따르면, 제2 모드에서, 재생기(352)는 디코더(362)에 할당된 버퍼들을 복사할 수 있다. 재생기(352)가 디코더(362)에 할당된 버퍼들을 복사함에 따라, 버퍼들의 개수가 제한되지 않을 수 있다. 예를 들어, 제2 모드는 버퍼 복사 모드(buffer copy mode) 또는 지정된 버퍼 모드(designated buffer mode)로 참조될 수 있다.
일 실시 예에 따르면, 프로세서(310)는 제1 모드에서, 디코딩을 위해 할당된 제1 버퍼들 중, 지정된 개수의 버퍼들에 하나 이상의 디코딩된 프레임들을 저장할 수 있다. 일 실시 예에 따르면, 프로세서(310)는 제2 모드에서, 탐색 요청을 위해 할당된 제2 버퍼들에 하나 이상의 디코딩된 프레임들을 저장할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 기준 프레임으로부터 제1 프레임까지의 프레임들의 디코딩에 기반하여, 디코딩된 프레임들을 획득할 수 있다. 프로세서(310)는 디코딩된 프레임들 중 하나 이상의 디코딩된 프레임들을 메모리(320)에 저장할 수 있다. 예를 들어, 하나 이상의 디코딩된 프레임들의 개수는 하나 이상의 디코딩된 프레임들이 저장되는, 메모리(320)의 버퍼들의 개수에 상응할 수 있다. 예를 들어, 프로세서(310)는 버퍼들의 개수에 기반하여, 디코딩된 프레임들 중, 하나 이상의 디코딩된 프레임들을 메모리(320)의 버퍼들에 저장할 수 있다.
동작 440에서, 프로세서(310)는 제2 탐색 요청을 식별할 수 있다. 예를 들어, 프로세서(310)는 제1 탐색 요청과 구별되는 제2 탐색 요청을 식별할 수 있다. 예를 들어, 제2 탐색 요청은, 비디오 콘텐트의 재생 구간 중 제2 시점(또는 제2 탐색 시점)을 지시할 수 있다. 일 예로, 비디오 콘텐트의 재생 구간 내에서, 제2 시점은 제1 시점보다 앞설 수 있다. 예를 들어, 제2 프레임은 비디오 콘텐트의 재생 구간 중 제2 시점에서 출력될 수 있다. 예를 들어, 제2 프레임은 제2 시점부터 제2 프레임에 따른 듀레이션(duration) 동안 출력될 수 있다.
동작 450에서, 프로세서(310)는 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되는지 여부를 결정(또는 식별)할 수 있다. 예를 들어, 프로세서(310)는 제2 탐색 요청에 기반하여, 제2 탐색 요청에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되는지 여부를 결정(또는 식별)할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 제2 프레임에 대한 디코딩의 수행 여부를 결정하기 위해, 제2 탐색 요청에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되는지 여부를 결정(또는 식별)할 수 있다.
동작 460에서, 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되는 경우, 프로세서(310)는 제2 프레임에 대응하는 디코딩된 프레임을 출력할 수 있다. 예를 들어, 제2 탐색 요청에 관한 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되는 결정에 따라, 메모리(320)에 저장되고, 제2 프레임에 대응하는 디코딩된 프레임을 디스플레이(330)를 통해 출력할 수 있다. 예를 들어, 제2 탐색 요청에 관한 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함됨을 식별하는 것에 기반하여, 메모리(320)에 저장되고, 제2 프레임에 대응하는 디코딩된 프레임을 디스플레이(330)를 통해 출력할 수 있다. 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되는 경우, 제2 프레임에 대응하는 디코딩된 프레임을 출력하는 예가 도 8에서 후술될 것이다.
동작 450에서, 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되지 않는 경우, 프로세서(310)는 디코더(362)를 이용하여, 제2 프레임에 대한 디코딩을 수행할 수 있다. 예를 들어, 제2 탐색 요청에 관한 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되지 않는 결정에 따라, 프로세서(310)는 디코더(362)를 이용하여, 제2 프레임에 대한 디코딩을 수행할 수 있다. 예를 들어, 제2 탐색 요청에 관한 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되지 않음을 식별하는 것에 기반하여, 프로세서(310)는 디코더(362)를 이용하여, 제2 프레임에 대한 디코딩을 수행할 수 있다.
일 실시 예에 따르면, 제2 프레임이 제1 프레임과 동일한 프레임 세트에 포함되더라도, 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되지 않을 수 있다. 예를 들어, 버퍼들의 개수의 부족에 따라, 제2 프레임에 대응하는 디코딩된 프레임이 삭제되었을 수 있다. 버퍼들의 개수의 부족에 따라, 제2 프레임에 대응하는 디코딩된 프레임이 삭제되는 예가 도 7에서 후술될 것이다. 예를 들어, 제2 프레임이 제1 프레임 이후에 배열되는 경우, 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되지 않을 수 있다.
일 실시 예에 따르면, 프로세서(310)는 제2 프레임이 제1 프레임과 동일한 프레임 세트에 포함되더라도, 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함되지 않는 경우, 제2 프레임에 대한 디코딩을 수행할 수 있다. 예를 들어, 프로세서(310)는 제2 프레임이 포함된 프레임 세트 내의 기준 프레임으로부터 제2 프레임까지의 프레임들의 디코딩을 수행할 수 있다. 프로세서(310)는 제2 프레임이 포함된 프레임 세트 내의 기준 프레임으로부터 제2 프레임까지의 프레임들의 디코딩에 기반하여, 제2 프레임에 대응하는 디코딩된 프레임(또는 제2 프레임)을 디스플레이(330)를 통해 출력할 수 있다.
일 실시 예에 따르면, 제2 프레임이 포함된 제2 프레임 세트는 제1 프레임이 포함된 제1 프레임 세트와 구별될 수 있다. 프로세서(310)는 제2 프레임이 포함된 제2 프레임 세트가 제1 프레임이 포함된 제1 프레임 세트와 구별됨을 식별하는 것에 기반하여, 메모리(320)에 저장된, 하나 이상의 디코딩된 프레임들을 제거할 수 있다. 프로세서(310)는 제2 프레임 세트에 포함된 복수의 다른 프레임들을 식별할 수 있다. 프로세서(310)는 복수의 다른 프레임들 내의 기준 프레임으로부터 제2 프레임까지의 프레임들의 디코딩을 수행할 수 있다. 프로세서(310)는 복수의 다른 프레임들 내의 기준 프레임으로부터 제2 프레임까지의 프레임들의 디코딩에 기반하여, 하나 이상의 디코딩된 다른 프레임들을 메모리(320)에 저장할 수 있다. 제2 프레임이 포함된 제2 프레임 세트는 제1 프레임이 포함된 제1 프레임 세트와 구별되는 경우, 하나 이상의 디코딩된 다른 프레임들을 메모리(320)에 저장하는 구체적인 예가 도 9a 및 도 9b에서 후술될 것이다.
일 실시 예에 따르면, 프로세서(310)는 하나 이상의 디코딩된 프레임들 중, 제2 프레임에 대응되는 디코딩된 프레임을 출력하는 것에 기반하여, 메모리(320)에서 상기 디코딩된 프레임을 제거할 수 있다. 디코딩된 프레임을 출력하는 것에 기반하여, 메모리(320)에서 상기 디코딩된 프레임을 제거하는 구체적인 예가 도 10에서 후술될 것이다. 실시 예에 따라, 프로세서(310)는 하나 이상의 디코딩된 프레임들 중, 제2 프레임에 대응되는 디코딩된 프레임을 출력하더라도, 메모리(320)에서 상기 디코딩된 프레임을 제거하지 않고 유지할 수도 있다.
도 5a는, 하나 이상의 디코딩된 프레임들을 저장하기 위한 방식을 결정하기 위한 전자 장치의 동작에 관한 흐름도를 도시한다.
도 5b는, 하나 이상의 디코딩된 프레임들을 저장하기 위한 방식에 따라 설정되는 버퍼들의 예를 도시한다.
도 5a를 참고하면, 프로세서(310)는 저장 방법 결정기(354)를 이용하여 이하에서 설명되는 동작 510 내지 동작 550을 수행할 수 있다.
동작 510에서, 프로세서(310)는 비디오 콘텐트에 관한 설정 정보를 식별할 수 있다. 예를 들어, 비디오 콘텐트에 관한 설정 정보는, 비디오 콘텐트를 탐색하기 위한 모드에 관한 정보, 비디오 콘텐트를 위한 메모리 자원에 관한 정보, 비디오 콘텐트의 재생 횟수, 비디오 콘텐트의 평균 재생 시간, 비디오 콘텐트에 관한 탐색 요청들의 횟수, 또는 비디오 콘텐트의 GOP(group of pictures) 내의 프레임들의 개수 중 적어도 하나를 포함할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 비디오 콘텐트에 관한 설정 정보 중 비디오 콘텐트를 탐색하기 위한 모드에 관한 정보를 식별할 수 있다. 프로세서(310)는 비디오 콘텐트를 탐색하기 위한 모드에 관한 정보에 기반하여, 비디오 콘텐트를 탐색하기 위한 모드를 제1 모드 및 제2 모드 중 하나로 식별할 수 있다. 예를 들어, 비디오 콘텐트를 탐색하기 위한 모드에 관한 정보는 코덱의 출력 동작에 관한 정보와 관련될 수 있다.
일 실시 예에 따르면, 제1 모드는 디코더(362)의 효율적인 메모리 관리 및 사용을 위해 설정될 수 있다. 제1 모드에서, 디코더(362)를 위해 할당된 메모리 영역이 공유될 수 있다. 디코더(362)를 위해 할당된 메모리 영역이 공유되므로, 디코더(362)를 위해 할당된 적어도 하나의 버퍼가 재생기(352)를 통해 사용될 수 있다. 디코더(362)를 위해 할당된 메모리 영역이 공유되므로, 디코더(362)를 위해 할당된 적어도 하나의 버퍼가 출력기(353)에서 사용될 수 있다. 따라서, 디코딩된 비디오는 디스플레이(330)까지 복사되지 않고 출력될 수 있다. 따라서, 제1 모드에서, 메모리가 최소한으로 할당되고, 프로세서(310)(예: CPU)에 높은 부하가 발생되는 메모리(또는 버퍼) 복사 과정이 수행되지 않을 수 있다.
일 실시 예에 따르면, 제2 모드에서, 프로세서(310)는, 재생기(352)를 이용하여, 디코더(362)에 할당된 버퍼들을 복사할 수 있다. 프로세서(310)는 비디오 콘텐트를 재생을 위해 디코더(362)에 할당된 버퍼들을 복사할 수 있다. 비디오 콘텐트의 재생을 위해 디코더(362)에 할당된 버퍼들이 복사됨에 따라, 버퍼들의 개수가 제한되지 않을 수 있다.
동작 520에서, 프로세서(310)는 비디오 콘텐트를 탐색하기 위한 모드가 제1 모드인지 여부를 식별할 수 있다. 프로세서(310)는 디코딩된 프레임들을 저장하기 위한 버퍼들을 할당하기 위해, 비디오 콘텐트를 탐색하기 위한 모드가 제1 모드인지 여부를 식별할 수 있다.
동작 530에서, 비디오 콘텐트를 탐색하기 위한 모드가 제1 모드인 경우, 프로세서(310)는 디코딩(또는 디코더(362))을 위해 할당된 제1 버퍼들 중, 지정된 개수의 버퍼들을 탐색 요청을 위해 할당할 수 있다. 예를 들어, 프로세서(310)는 비디오 콘텐트를 탐색하기 위한 모드를 제1 모드로 식별하는 것에 기반하여, 디코딩을 위해 할당된 제1 버퍼들 중, 지정된 개수의 버퍼들을 탐색 요청을 위해 할당할 수 있다. 예를 들어, 프로세서(310)는 비디오 콘텐트를 탐색하기 위한 모드가 제1 모드인 것의 결정에 따라(in accordance with a determination), 디코딩을 위해 할당된 제1 버퍼들 중, 지정된 개수의 버퍼들을 탐색 요청을 위해 할당할 수 있다.
일 실시 예에 따르면, 디코더(362)(예: 도 3a의 디코더(362))는 디코딩을 위해 할당된 제1 버퍼들의 개수를 결정할 수 있다. 예를 들어, 제1 버퍼들은 코덱부(360)에서 복호화를 위해 필요한 버퍼들, 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 버퍼들 및 출력기(353)에서 필요한 버퍼들을 포함할 수 있다. 예를 들어, 저장 방법 결정기(354)(예: 도 3a의 저장 방법 결정기(354))는 제1 버퍼들의 개수를 식별할 수 있다. 저장 방법 결정기(354)는 제1 버퍼들 중 디코더(362)에게 반환하지 않아도 되는 버퍼들의 개수를 결정할 수 있다. 저장 방법 결정기(354)는 디코더(362)에게 반환하지 않아도 되는, 지정된 개수의 버퍼들을, 탐색 요청을 위해 할당할 수 있다.
일 실시 예에 따르면, 제1 버퍼들은 디코딩을 위해 할당될 수 있다. 예를 들어, 제1 버퍼들은, 코덱부(360)에서 복호화를 위해 필요한 버퍼들, 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 버퍼들 및 출력기(353)에서 필요한 버퍼들을 포함할 수 있다. 예를 들어, 제1 버퍼들의 개수는 코덱부(360)에서 복호화를 위해 필요한 버퍼들의 최소 개수, 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 버퍼들의 개수 및 출력기(353)에서 필요한 버퍼들의 최소 개수의 합으로 설정될 수 있다.
일 실시 예에 따르면,프로세서(310)는 제1 버퍼들 중 지정된 개수의 버퍼들을 할당할 수 있다. 예를 들어, 프로세서(310)는 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 버퍼들을 탐색 요청을 위해 할당할 수 있다. 일 예로, 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 버퍼들의 개수가 7개로 설정될 수 있다. 코덱부(360)에서 복호화를 위해 필요한 버퍼들의 개수가 6개로 설정될 수 있다. 출력기(353)에서 필요한 버퍼들의 개수가 4개로 설정될 수 있다. 따라서 제1 버퍼들의 개수는 17개로 설정될 수 있다. 프로세서(310)는 저장 방법 결정기(354)를 이용하여, 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 7개의 버퍼들을 탐색 요청을 위해 할당할 수 있다.
동작 540에서, 비디오 콘텐트를 탐색하기 위한 모드가 제1 모드가 아닌 경우, 프로세서(310)는 탐색 요청을 위해 할당될 제2 버퍼들의 개수를 결정할 수 있다. 예를 들어, 프로세서(310)는 비디오 콘텐트를 탐색하기 위한 모드를 제2 모드로 식별하는 것에 기반하여, 탐색 요청을 위해 할당될 제2 버퍼들의 개수를 결정할 수 있다. 예를 들어, 프로세서(310)는 비디오 콘텐트를 탐색하기 위한 모드가 제2 모드인 것의 결정에 따라(in accordance with a determination), 탐색 요청을 위해 할당될 제2 버퍼들의 개수를 결정할 수 있다.
동작 550에서, 프로세서(310)는 결정된 개수의 제2 버퍼들을 탐색 요청을 위해 할당할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 비디오 콘텐트에 관한 설정 정보에 기반하여, 탐색 요청을 위해 할당될 제2 버퍼들의 개수를 결정할 수 있다. 제2 버퍼들은 제1 버퍼들과 구별될 수 있다.
일 실시 예에 따르면, 프로세서(310)는, 비디오 콘텐트에 관한 설정 정보 중, 비디오 콘텐트를 위한 메모리 자원에 관한 정보, 비디오 콘텐트의 재생 횟수, 비디오 콘텐트의 평균 재생 시간, 비디오 콘텐트에 관한 탐색 요청들의 횟수, 또는 비디오 콘텐트의 GOP(group of pictures) 내의 프레임들의 개수 중 적어도 하나에 기반하여, 탐색 요청을 위해 할당될 제2 버퍼들의 개수를 결정할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 비디오 콘텐트를 위한 메모리 자원이 충분한지 여부에 기반하여, 제2 버퍼들의 개수를 결정할 수 있다. 프로세서(310)는 비디오 콘텐트를 위한 메모리 자원이 충분함에 따라, 제2 버퍼들의 개수를 증가시킬 수 있다. 실시 예에 따라, 프로세서(310)는 제2 버퍼들의 개수를 증가시키기 위해, 더블 버퍼링 방식(또는 트리플 버퍼링 방식)을 사용할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 비디오 콘텐트의 해상도에 기반하여, 제2 버퍼들의 개수를 결정할 수 있다. 프로세서(310)는 비디오 콘텐트의 해상도가 높은 경우, 메모리 자원이 과도하게 사용되는 것을 방지하기 위해, 제2 버퍼들의 개수를 감소시킬 수 있다. 일 예로, 프로세서(310)는 제1 해상도를 가지는 비디오 콘텐트를 위해 제2 버퍼들의 개수를 15개로 설정할 수 있다. 일 예로, 프로세서(310)는 제1 해상도보다 높은 제2 해상도를 가지는 비디오 콘텐트를 위해 제2 버퍼들의 개수를 7개로 설정할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 비디오 콘텐트의 GOP에 기반하여, 제2 버퍼들의 개수를 결정할 수 있다. 프로세서(310)는 지정된 크기보다 큰 GOP에 기반하여, 제2 버퍼들의 개수를 증가시킬 수 있다. 실시 예에 따라, 프로세서(310)는 제2 버퍼들의 개수를 증가시키기 위해, 더블 버퍼링 방식(또는 트리플 버퍼링 방식)을 사용할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 사용자의 비디오 콘텐트에 대한 선호도에 관한 정보에 기반하여, 제2 버퍼들의 개수를 결정할 수 있다. 예를 들어, 사용자의 비디오 콘텐트에 대한 선호도에 관한 정보는 비디오 콘텐트의 재생 횟수, 비디오 콘텐트의 평균 재생 시간, 및/또는 비디오 콘텐트에 관한 탐색 요청들의 횟수를 포함할 수 있다.
예를 들어, 비디오 콘텐트의 재생 횟수, 비디오 콘텐트의 평균 재생 시간, 및/또는 비디오 콘텐트에 관한 탐색 요청들의 횟수는, 비디오 콘텐트를 위한 데이터 베이스에 저장될 수 있다. 예를 들어, 비디오 콘텐트의 재생 횟수, 비디오 콘텐트의 평균 재생 시간, 및/또는 비디오 콘텐트에 관한 탐색 요청들의 횟수는 비디오 콘텐트의 메타 데이터에 포함될 수 있다.
일 실시 예에 따르면, 프로세서(310)는 비디오 콘텐트의 재생 횟수에 기반하여, 제2 버퍼들의 개수를 결정할 수 있다. 프로세서(310)는 지정된 횟수보다 큰 비디오 콘텐트의 재생 횟수에 기반하여, 제2 버퍼들의 개수를 증가시킬 수 있다. 실시 예에 따라, 프로세서(310)는 제2 버퍼들의 개수를 증가시키기 위해, 더블 버퍼링 방식(또는 트리플 버퍼링 방식)을 사용할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 비디오 콘텐트의 탐색 요청들의 횟수에 기반하여, 제2 버퍼들의 개수를 결정할 수 있다. 프로세서(310)는 지정된 횟수보다 큰 탐색 요청들의 횟수에 기반하여, 제2 버퍼들의 개수를 증가시킬 수 있다. 실시 예에 따라, 프로세서(310)는 제2 버퍼들의 개수를 증가시키기 위해, 더블 버퍼링 방식(또는 트리플 버퍼링 방식)을 사용할 수 있다.
일 실시 예에 따르면, 비디오 콘텐트의 재생 횟수가 50번일 수 있다. 비디오 콘텐트의 탐색 요청들(예: 역방향의 탐색 요청들)의 횟수가 3000번 일 수 있다. 비디오 콘텐트의 평균 재생 시간이 4초 일 수 있다. 프로세서(310)는 비디오 콘텐트가 1번 재생될 때 평균 60번의 탐색 요청들(예: 역방향의 탐색 요청들)이 발생함을 식별할 수 있다. 프로세서(310)는 평균 재생시간이 4초이므로, 1초 당 평균 15번의 탐색 요청들이 발생하였음을 식별할 수 있다. 프로세서(310)는 초당 평균 탐색 요청들의 임계 횟수가 10으로 설정된 경우, 상기 비디오 콘텐트의 초당 평균 탐색 요청들의 횟수가 15번이므로, 제2 버퍼의 개수를 증가시킬 수 있다. 실시 예에 따라, 프로세서(310)는 제2 버퍼들의 개수를 증가시키기 위해, 더블 버퍼링 방식(또는 트리플 버퍼링 방식)을 사용할 수 있다.
도 5b를 참고하면, 제1 모드(591) 및 제2 모드(592)에 따라, 탐색 요청을 위해 버퍼들이 할당될 수 있다.
일 실시 예에 따르면, 제1 모드(591)에서, 디코더(362)를 위해 할당된 메모리 영역이 공유될 수 있다. 따라서, 제1 모드(591)에서, 메모리가 최소한으로 할당되고, 프로세서(310)(예: CPU)에 높은 부하가 발생되는 메모리(또는 버퍼) 복사 과정이 수행되지 않을 수 있다. 일 실시예에 따르면 디코더(362)에서 디코딩 된 프레임은 재생기(352), 출력기(353) 및 디스플레이(330)까지 복사 없이 출력될 수 있다. 제1 모드(591)를 통해 메모리 영역이 최소한으로 할당될 수 있다. 제1 모드(591)를 통해 CPU에 높은 부하를 줄 수 있는 메모리 복사가 수행되지 않을 수 있다.
일 실시 예에 따르면, 제1 모드(591)에서, 메모리(320)의 저장 영역 내에서, 제1 버퍼들(581)이 할당될 수 있다. 제1 버퍼들(581)은 디코딩을 위해 할당될 수 있다. 예를 들어, 제1 버퍼들(581)은 코덱부(360)에서 복호화를 위해 필요한 버퍼들, 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 버퍼들 및 출력기(353)에서 필요한 버퍼들을 포함할 수 있다.
일 실시 예에 따르면, 제1 모드(591)에서, 프로세서(310)는 제1 버퍼들 중, 지정된 개수의 버퍼들(582)을 탐색 요청을 위해 할당할 수 있다. 프로세서(310)는 재생 중 비디오의 끊어짐을 감소시키기(또는 방지하기) 위한 버퍼들을 탐색 요청을 위해 할당할 수 있다. 제1 모드(591)에서 제1 버퍼들 중 지정된 개수의 버퍼들(582)이 탐색 요청을 위해 할당되므로, 탐색 요청을 위해 할당된 버퍼들(582)의 개수는 고정될 수 있다.
일 실시 예에 따르면, 제2 모드(592)에서, 재생기(352)는 디코딩된 프레임들을 출력하기 위해 디코더(362)에 할당된 버퍼들을 복사할 수 있다. 재생기(352)가 디코더(362)에 할당된 버퍼들을 복사함에 따라, 버퍼들의 개수가 제한되지 않을 수 있다.
일 실시 예에 따르면, 제2 모드(592)에서, 메모리(320)의 저장 영역 내에서, 제2 버퍼들(583)이 할당될 수 있다. 제2 버퍼들(583)은 탐색 요청을 위해 할당될 수 있다. 프로세서(310)는 비디오 콘텐트에 관한 설정 정보에 기반하여, 제2 버퍼들(583)의 개수를 결정할 수 있다. 제2 모드(592)에서 제2 버퍼들의 개수는 동적으로 변경될 수 있다.
이하의 도 6 내지 도 11b에서, 제1 모드(591)에 기반하여 탐색 요청을 위해 버퍼들을 할당하기 위한 전자 장치(300)(또는 프로세서(310))의 동작의 예가 설명될 것이다.
이하의 도 12a 및 도 12b에서, 제2 모드(592)에 기반하여 탐색 요청을 위해 버퍼들을 할당하기 위한 전자 장치(300)(또는 프로세서(310))의 동작의 예가 설명될 것이다.
도 6은 제1 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 6을 참고하면, 프로세서(310)는 재생 위치 표시부(381)를 통해 제1 탐색 요청을 수신할 수 있다. 프로세서(310)는 재생기(352)를 이용하여, 제1 탐색 요청이 지시하는 제1 시점(또는 제1 탐색 시점)을 식별할 수 있다. 예를 들어, 제1 탐색 요청이 지시하는 제1 시점은 1220 [ms]를 지시할 수 있다. 프로세서(310)는 디먹서(351)에게 제1 시점에서 표시되는 프레임을 요청할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 디먹서(351)를 이용하여, 제1 시점(예: 1220 [ms])에 관한 프레임 세트를 식별할 수 있다. 프레임 세트는 복수의 프레임들(610)을 포함할 수 있다. 복수의 프레임들(610) 중 초기 프레임(initial frame)인 프레임(610-1)은 I 프레임(또는 기준 프레임)으로 설정될 수 있다. 복수의 프레임들(610) 중 초기 프레임을 제외한 나머지 프레임들 각각은 P 프레임(또는 예측 프레임)으로 설정될 수 있다.
일 실시 예에 따르면, 프레임(610-1)은 비디오 콘텐트의 재생 구간 중, 1000 [ms] 내지 1032 [ms]에서 표시될 수 있다. 프레임(610-2)은 비디오 콘텐트의 재생 구간 중, 1033 [ms] 내지 1065 [ms]에서 표시될 수 있다. 프레임(610-3)은 비디오 콘텐트의 재생 구간 중, 1066 [ms] 내지 1099 [ms]에서 표시될 수 있다. 프레임(610-4)은 비디오 콘텐트의 재생 구간 중, 1100 [ms] 내지 1132 [ms]에서 표시될 수 있다. 프레임(610-5)은 비디오 콘텐트의 재생 구간 중, 1134 [ms] 내지 1165 [ms]에서 표시될 수 있다. 프레임(610-6)은 비디오 콘텐트의 재생 구간 중, 1166 [ms] 내지 1199 [ms]에서 표시될 수 있다. 프레임(610-7)은 비디오 콘텐트의 재생 구간 중, 1200 [ms] 내지 1232 [ms]에서 표시될 수 있다. 프레임(610-8)은 비디오 콘텐트의 재생 구간 중, 1233 [ms] 내지 1265 [ms]에서 표시될 수 있다. 프레임(610-9)은 비디오 콘텐트의 재생 구간 중, 1266 [ms] 내지 1299 [ms]에서 표시될 수 있다. 프레임(610-10)은 비디오 콘텐트의 재생 구간 중, 1300 [ms] 내지 1333 [ms]에서 표시될 수 있다.
일 실시 예에 따르면, 프로세서(310)는 디먹서(351)를 이용하여, I 프레임인 프레임(610-1)을 획득할 수 있다. 프로세서(310)는 재생기(352)를 이용하여, I 프레임인 프레임(610-1)을 디코더(362)에게 전달(또는 제공)할 수 있다. 프로세서(310)는 디코더(362)를 이용하여, 프레임(610-1)에 대한 디코딩을 수행할 수 있다. 프로세서(310)는 프레임(610-1)에 대한 디코딩에 기반하여, 프레임(610-1)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(651)에 저장할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 디먹서(351)를 이용하여, P 프레임인 프레임(610-2)을 획득할 수 있다. 프로세서(310)는 재생기(352)를 이용하여, P 프레임인 프레임(610-2)을 디코더(362)에게 전달(또는 제공)할 수 있다. 프로세서(310)는 디코더(362)를 이용하여, 프레임(610-2)에 대한 디코딩을 수행할 수 있다. 예를 들어, 프로세서(310)는 프레임(610-2)의 이전 프레임인 프레임(610-1)을 이용하여, 프레임(610-2)에 대한 디코딩을 수행할 수 있다. 프로세서(310)는 프레임(610-2)에 대한 디코딩에 기반하여, 프레임(610-2)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(652)에 저장할 수 있다.
상술한 예와 유사하게 프로세서(310)는 프레임(610-3) 내지 프레임(610-7)에 대한 디코딩을 수행할 수 있다. 프로세서(310)는 I 프레임인 프레임(610-1)부터 제1 시점(예: 1220 [ms])에 대응하는 프레임(610-7)까지 디코딩을 수행할 수 있다. 프레임(610-1)부터 프레임(610-7)까지의 프레임들의 디코딩은 순차적으로 수행될 수 있다.
일 실시 예에 따르면, 프로세서(310)는 저장 관리기(355)를 이용하여, 프레임(610-3)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(653)에 저장할 수 있다. 프로세서(310)는 저장 관리기(355)를 이용하여, 프레임(610-4)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(654)에 저장할 수 있다. 프로세서(310)는 프레임(610-5)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(655)에 저장할 수 있다. 프로세서(310)는 프레임(610-6)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(656)에 저장할 수 있다. 프로세서(310)는 프레임(610-7)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(657)에 저장할 수 있다. 예를 들어, 프로세서(310)는 저장 관리기(355)를 이용하여, 최대 저장 가능한 버퍼의 개수에 따라, 디코딩된 프레임을 버퍼에 저장할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 디먹서(351)로부터 디코딩할 프레임들(610-1 내지 610-7)과 함께 각 프레임에 대한 타임스탬프(timestamp) 및 듀레이션(duration)을 획득할 수 있다. 각 프레임에 대한 타임스탬프는 각 프레임이 출력되는 시점을 나타낼 수 있다. 각 프레임에 대한 듀레이션은 각 프레임의 출력이 유지되는 시간 구간을 나타낼 수 있다.
상술한 바와 같이, 디코딩된 프레임들을 저장하기 위해 7개의 버퍼들(650)이 할당될 수 있다. 7개의 버퍼들(650)은 디코딩을 위해 할당된 제1 버퍼들로부터 할당될 수 있다. 디코딩을 위해 할당된 제1 버퍼들로부터 버퍼들(650)이 할당된 경우, 버퍼들(650) 각각은 버퍼 포인터(또는 버퍼 인덱스)로 지시될 수 있다.
일 실시 예에 따르면, 버퍼(651)의 버퍼 포인터 값이 제1 값(예: '1')로 설정될 수 있다. 버퍼(652)의 버퍼 포인터 값이 제2 값(예: '2')로 설정될 수 있다. 버퍼(653)의 버퍼 포인터 값이 제3 값(예: '3')로 설정될 수 있다. 버퍼(654)의 버퍼 포인터 값이 제4 값(예: '4')로 설정될 수 있다. 버퍼(655)의 버퍼 포인터 값이 제5 값(예: '5')로 설정될 수 있다. 버퍼(656)의 버퍼 포인터 값이 제6 값(예: '6')로 설정될 수 있다. 버퍼(657)의 버퍼 포인터 값이 제7 값(예: '7')로 설정될 수 있다.
일 실시 예에 따르면, 버퍼(예: 버퍼(651) 내지 버퍼(657))에 디코딩된 프레임, 타임스탬프, 듀레이션, 버퍼 포인터 값이 저장될 수 있다. 예를 들어, 버퍼(651)에, 프레임(610-1)에 대한 디코딩된 프레임, 프레임(610-1)의 타임스탬프, 프레임(610-1)에 대한 듀레이션, 및 버퍼(651)의 버퍼 포인터 값이 저장될 수 있다.
일 실시 예에 따르면, 제1 탐색 요청에 기반하여, 프로세서(310)는 I 프레임인 프레임(610-1)을 먼저 디코딩할 수 있다. 디코딩된 프레임(610-1)이 제1 탐색 요청이 지시하는 제1 시점(예: 1220 [ms])에 대응하는 프레임이 아니므로 프로세서(310)는 프레임(610-1)을 출력하지 않을 수 있다. 프로세서(310)는 디코더(362)에게 반환하지 않아도 되는 버퍼들(650)에 여유 공간이 있는지 여부를 식별할 수 있다. 예를 들어, 프로세서(310)는 7 개의 버퍼들(650)이 이용 가능함을 식별할 수 있다. 프로세서(310)는 디코딩된 프레임(610-1)을 버퍼(651)에 저장할 수 있다. 프로세서(310)는 프레임들을 디코딩하고, 디코딩된 프레임들을 순차적으로 버퍼들(650)에 저장할 수 있다.
도 6은, 리스트 형태로 버퍼에 정보(예: 디코딩된 프레임, 타임스탬프, 듀레이션, 및 버퍼 포인터)가 저장되는 예가 도시되었으나, 이에 한정되는 것은 아니다. 버퍼에 정보를 저장하기 위해, 큐(queue), 맵(map), 또는 벡터(vector) 중 적어도 하나가 사용될 수 있다.
일 실시 예에 따르면, 프로세서(310)는 제1 탐색 요청에 따른 프레임(610-7)에 대한 디코딩이 수행되는 것에 기반하여, 프레임(610-7)에 대한 디코딩된 프레임을 출력할 수 있다. 프로세서(310)는 저장 관리기(355)를 이용하여, 프레임(610-7)에 대한 디코딩된 프레임을 획득하고, 출력기(353)를 이용하여, 디코딩된 프레임을 출력할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 프레임들(610)의 타임스탬프들 및 듀레이션들에 기반하여, 제1 탐색 요청에 따른 제1 시점에 대응하는 프레임(610-7)을 식별할 수 있다. 예를 들어, 프로세서(310)는 제1 탐색 요청에 따른 제1 시점(예: 1220 [ms])을 식별할 수 있다. 프로세서(310)는 하기의 수학식을 만족하는 프레임을 식별할 수 있다.
수학식 1을 참고하면, ts는 프레임의 타임스탬프이다. t는 제1 탐색 요청에 따른 제1 시점이다. d는 프레임의 듀레이션이다. 프로세서(310)는 수학식 1을 이용하여, 제1 탐색 요청에 따른 제1 시점에 대응하는 프레임(예: 프레임(610-7))을 식별할 수 있다. 실시 예에 따라, 프로세서(310)는 프레임들의 듀레이션을 식별하지 못하는 경우, 하기의 수학식을 만족하는 프레임을 식별할 수 있다.
수학식 2를 참고하면, tsmin는 수학식 2를 만족하는 프레임들의 타임스탬프들 중 가장 작은 타임스탬프이다. t는 제1 탐색 요청에 따른 제1 시점이다. 프로세서(310)는 수학식 2를 이용하여, 제1 탐색 요청에 따른 제1 시점에 대응하는 프레임(예: 프레임(610-7))을 식별할 수 있다. 예를 들어, 프로세서(310)는 tsmin의 타임스탬프를 가지는 프레임(예: 프레임(610-8))을 식별할 수 있다. 프로세서(310)는 tsmin의 타임스탬프를 가지는 프레임의 이전 프레임을 제1 시점에 대응하는 프레임(예: 프레임(610-7))으로 식별할 수 있다.
도 7은 제1 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 7을 참조하면, 상태(710)에서, 프로세서(310)는 제1 탐색 요청을 식별할 수 있다. 제1 탐색 요청은 제1 시점(예: 1250 [ms])을 지시할 수 있다. 프로세서(310)는 제1 시점에 대한 프레임(610-8)을 포함하는 복수의 프레임들(610)을 식별할 수 있다. 프로세서(310)는 I 프레임인 프레임(610-1)부터 프레임(610-8)까지 프레임들의 디코딩을 순차적으로 수행할 수 있다. 프레임(610-1)부터 프레임(610-8)까지의 프레임들의 순차적인 디코딩에 대한 구체적인 동작은 도 6을 참조할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 프레임(610-7)에 대한 디코딩을 수행하고, 프레임(610-7)에 대한 디코딩된 프레임을 버퍼(657)에 저장할 수 있다. 디코딩된 프레임들을 저장하기 위해 할당된 버퍼들(650)의 개수가 7 개이므로, 버퍼들(650) 각각은 추가적인 디코딩된 프레임을 저장하지 못할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 FIFO(first in first out)에 기반하여, 버퍼들(650)에 디코딩된 프레임들을 저장할 수 있다. 프로세서(310)는 버퍼들(650)에 전부에 정보(또는 데이터)가 저장된 경우, 추가적으로 디코딩된 프레임을 저장하기 위해, 버퍼(651)에 저장된 정보를 삭제할 수 있다. 프로세서(310)는 프레임(610-8)에 대한 디코딩된 프레임을 저장하기 위해, 버퍼(651)에 저장된 정보(예: 프레임(610-1)에 대한 디코딩된 프레임, 타임스탬프, 듀레이션, 및 버퍼 포인터 값)를 삭제할 수 있다. 일 실시 예에 따르면, 7 개의 버퍼들에 모두 디코딩된 프레임들이 모두 저장되어 있으므로, 타임스탬프 값이 가장 작은 1000 ms의 프레임을 저장하는 버퍼(656)의 정보(예: 프레임(610-1)에 대한 디코딩된 프레임, 타임스탬프, 듀레이션, 및 버퍼 포인터 값)를 삭제할 수 있다.
상태(720)에서, 프로세서(310)는 프레임(610-8)에 대한 디코딩을 수행하고, 프레임(610-8)에 대한 디코딩된 프레임을 버퍼(651)에 저장할 수 있다. 예를 들어, 버퍼(651)는, 프레임(610-8)에 대한 타임스탬프(예: 1233 [ms]), 프레임(610-8)에 대한 듀레이션(예: 33 [ms]), 및 버퍼(651)에 대한 버퍼 포인터 값(예: 8)을 저장할 수 있다. 예를 들어, 프레임(610-8)에 대한 디코딩된 프레임이 저장되는 경우, 버퍼(651)에 대한 버퍼 포인터 값이 변경될 수 있다. 프로세서(310)는 제1 버퍼 포인터 값(예: '1')을 가지는 버퍼(651)에 저장된 정보(예: 프레임(610-1)에 대한 디코딩된 프레임, 타임스탬프, 듀레이션, 및 버퍼 포인터 값)를 삭제하고, 제1 버퍼 포인터 값(예: '1')을 가지는 버퍼(651)를 디코더(362)에게 반환할 수 있다. 프로세서(310)는 제2 버퍼 포인터 값(예: '8')을 가지는 버퍼(651)에 프레임(610-8)에 대한 디코딩된 프레임, 타임스탬프, 듀레이션, 및 버퍼 포인터 값을 저장할 수 있다. 실시 예에 따라, 프로세서(310)는 버퍼(651)에 저장된 정보를 삭제하지 않고, 프레임(610-9)에 대한 디코딩된 프레임을 버퍼(651)에 덮어쓸(overwrite) 수 있다. 이 경우, 버퍼 포인터 값이 유지될 수도 있다.
도시하지는 않았으나, 프레임(610-9)에 대한 디코딩이 수행되는 경우, 프로세서(310)는 프레임(610-9)에 대한 디코딩된 프레임을 버퍼(652)에 저장할 수 있다. 프로세서(310)는 프레임(610-9)에 대한 디코딩된 프레임을 저장하기 위해, 버퍼(652)에 저장된 정보를 삭제할 수 있다. 프로세서(310)는 버퍼(652)에 저장된 정보가 삭제된 후, 프레임(610-9)에 대한 디코딩된 프레임을 버퍼(652)에 저장할 수 있다. 실시 예에 따라, 프로세서(310)는 버퍼(652)에 저장된 정보를 삭제하지 않고, 프레임(610-9)에 대한 디코딩된 프레임을 버퍼(652)에 덮어쓸(overwrite) 수 있다.
일 실시 예에 따르면, 프로세서(310)는 재생기(352)를 통해 재생 시작 요청을 식별하는 것에 기반하여, 버퍼들(650)을 디코더에게 반환할 수 있다. 프로세서(310)는 탐색 요청을 위한 버퍼들(650)의 할당을 해제할 수 있다. 버퍼들(650)의 할당이 해제된 후, 버퍼들(650)은 비디오 콘텐트의 재생을 위해 사용될 수 있다.
도 8은 제1 탐색 요청 및 제2 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 8을 참고하면, 상태(810)에서, 프로세서(310)는 제1 탐색 요청에 기반하여, 프레임(610-1) 내지 프레임(610-7)에 대한 디코딩이 수행될 수 있다. 프로세서(310)는 버퍼들(650)에 프레임(610-1) 내지 프레임(610-7)에 대한 디코딩된 프레임들을 저장할 수 있다. 상태(810)에서 프레임(610-1) 내지 프레임(610-7)에 대한 디코딩된 프레임들이 저장되는 기술적 특징은 도 6의 기술적 특징에 상응할 수 있다.
상태(820)에서, 프로세서(310)는 제2 탐색 요청을 식별할 수 있다. 프로세서(310)는 재생 위치 표시부(381)를 통해 제2 탐색 요청을 식별(또는 수신)할 수 있다. 프로세서(310)는 재생기(352)를 이용하여, 제2 탐색 요청이 지시하는 제2 시점을 식별할 수 있다. 제2 시점은 제1 시점보다 빠를 수 있다. 예를 들어, 제2 탐색 요청이 지시하는 제2 시점은 1120 [ms]를 지시할 수 있다. 프로세서(310)는 제2 시점에 대응하는 프레임(610-4)을 식별할 수 있다.
프로세서(310)는 버퍼들(650)에 저장된 디코딩된 프레임들에 제2 시점에 대응하는 프레임(610-4)에 대한 디코딩된 프레임이 포함되는지 여부를 식별할 수 있다. 프로세서(310)는 버퍼(654)에 프레임(610-4)에 대한 디코딩된 프레임이 포함됨을 식별할 수 있다. 프로세서(310)는 저장 관리기(355)를 이용하여, 버퍼(654)에 저장된, 프레임(610-4)에 대한 디코딩된 프레임을 출력할 수 있다. 버퍼(654)에 저장된, 프레임(610-4)에 대한 디코딩된 프레임이 출력됨에 따라, 프레임(610-4)에 대한 디코딩이 수행되지 않을 수 있다. 따라서, 버퍼(654)에 저장된, 프레임(610-4)에 대한 디코딩된 프레임이 출력됨에 따라, 디코딩을 위한 지연시간이 감소될 수 있다.
도 9a는 제1 탐색 요청 및 제2 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 9b는 제1 탐색 요청 및 제2 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 9a를 참고하면, 상태(910)에서, 프로세서(310)는 제1 탐색 요청에 기반하여, 프레임(610-1) 내지 프레임(610-7)에 대한 디코딩이 수행될 수 있다. 프로세서(310)는 버퍼들(650)에 프레임(610-1) 내지 프레임(610-7)에 대한 디코딩된 프레임들을 저장할 수 있다. 상태(910)에서 프레임(610-1) 내지 프레임(610-7)에 대한 디코딩된 프레임들이 저장되는 기술적 특징은 도 6의 기술적 특징에 상응할 수 있다.
상태(920)에서, 프로세서(310)는 제2 탐색 요청을 식별할 수 있다. 프로세서(310)는 재생 위치 표시부(381)를 통해 제2 탐색 요청을 식별(또는 수신)할 수 있다. 프로세서(310)는 재생기(352)를 이용하여, 제2 탐색 요청이 지시하는 제2 시점을 식별할 수 있다. 제2 시점은 제1 시점보다 느릴 수 있다. 예를 들어, 제2 탐색 요청이 지시하는 제2 시점은 1280 [ms]를 지시할 수 있다. 프로세서(310)는 제2 시점에 대응하는 프레임(610-9)을 식별할 수 있다. 프로세서(310)는 제2 시점에 대응하는 프레임(610-9)이 포함된 프레임 세트가 프레임(610-7)이 포함된 프레임세트에 상응함을 식별할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 버퍼들(650)에 저장된 디코딩된 프레임들에 제2 시점에 대응하는 프레임(610-9)에 대한 디코딩된 프레임이 포함되는지 여부를 식별할 수 있다. 프로세서(310)는 제2 시점이 제1 시점 이후이므로, 프레임(610-9)이 버퍼들(650)에 저장된 디코딩된 프레임들에 포함되지 않음을 식별할 수 있다. 프로세서(310)는 프레임(610-9)에 대한 디코딩을 수행하기 위해, 프레임(610-8)에 대한 디코딩을 수행할 수 있다. 프로세서(310)는 프레임(610-8)에 대한 디코딩된 프레임을 버퍼(651)에 저장할 수 있다. 프로세서(310)는 프레임(610-9)에 대한 디코딩을 수행할 수 있다. 프로세서(310)는 프레임(610-9)에 대한 디코딩된 프레임을 버퍼(652)에 저장할 수 있다. 프로세서(310)는 프레임(610-9)에 대한 디코딩된 프레임을 획득하는 것에 기반하여, 프레임(610-9)에 대한 디코딩된 프레임을 출력할 수 있다.
도 9b를 참고하면, 상태(930)에서, 프로세서(310)는 제1 탐색 요청에 기반하여, 프레임(610-1) 내지 프레임(610-7)에 대한 디코딩이 수행될 수 있다. 상태(930)는 도 9a의 상태(910)에 상응할 수 있다.
상태(940)에서, 프로세서(310)는 제2 탐색 요청을 식별할 수 있다. 프로세서(310)는 재생 위치 표시부(381)를 통해 제2 탐색 요청을 식별(또는 수신)할 수 있다. 프로세서(310)는 재생기(352)를 이용하여, 제2 탐색 요청이 지시하는 제2 시점을 식별할 수 있다. 제2 시점은 제1 시점보다 느릴 수 있다. 예를 들어, 제2 탐색 요청이 지시하는 제2 시점은 1550 [ms]를 지시할 수 있다. 프로세서(310)는 제2 시점에 대응하는 프레임(620-2)을 식별할 수 있다. 프로세서(310)는 제2 시점에 대응하는 프레임(620-2)이 포함된 프레임 세트가 프레임(610-7)이 포함된 프레임 세트와 구별됨을 식별할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 제1 시점 및 제2 시점 사이에 I 프레임인 프레임(620-1)이 존재함을 식별할 수 있다. 프로세서(310)는 I 프레임인 프레임(620-1)부터 제2 시점에 대응하는 프레임(620-2)까지 디코딩을 수행할 수 있다. 프로세서(310)는 프레임(620-1)부터 프레임(620-2)까지의 디코딩된 프레임들을 버퍼들(650)에 저장할 수 있다. 예를 들어, 프로세서(310)는 제1 탐색 요청에 따라 버퍼들(650)에서 저장된 정보를 제거하고, 프레임(620-1)부터 프레임(620-2)까지의 디코딩된 프레임들을 버퍼들(650)에 저장할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 버퍼들(650)에 저장된 정보를 제거하고, 버퍼들(650)을 디코더(362)에게 반환할 수 있다. 프로세서(310)는 디먹서(351)를 이용하여 프레임(620-1)을 획득할 수 있다. 프로세서(310)는 디코더(362)를 이용하여 프레임(620-1)부터 프레임(620-2)까지의 프레임들의 디코딩을 수행하고, 디코딩된 프레임을 버퍼(651) 및 버퍼(652)에 저장할 수 있다.
도 10은 제1 탐색 요청 및 제2 탐색 요청에 따른 전자 장치의 동작의 예를 도시한다.
도 10을 참고하면, 상태(1010)에서, 프로세서(310)는 디코딩을 수행하고, 디코딩된 프레임이 출력되는 경우, 디코딩된 프레임을 버퍼들(650)에 저장하지 않을 수 있다.
일 실시 예에 따르면, 프로세서(310)는 제1 탐색 요청을 식별할 수 있다. 프로세서(310)는 제1 탐색 요청이 지시하는 제1 시점을 식별할 수 있다. 예를 들어, 제1 시점은 1250 [ms]일 수 있다. 프로세서(310)는 제1 시점에 대응하는 프레임(1250)을 식별할 수 있다.
일 실시예에 따르면 프로세서(310)는 프레임(610-8)에 대한 디코딩된 프레임을 출력하기 위해, 프레임(610-1)부터 프레임(610-8)까지의 프레임들을 디코딩할 수 있다. 예를 들어, 프로세서(310)는 프레임(610-1)부터 프레임(610-8)까지의 프레임들을 순차적으로 디코딩할 수 있다.
일 실시예에 따르면 프로세서(310)는 프레임(610-1)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(651)에 저장할 수 있다. 프로세서(310)는 프레임(610-2)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(652)에 저장할 수 있다. 프로세서(310)는 프레임(610-3)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(653)에 저장할 수 있다. 프로세서(310)는 프레임(610-4)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(654)에 저장할 수 있다. 프로세서(310)는 프레임(610-5)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(655)에 저장할 수 있다. 프로세서(310)는 프레임(610-6)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(656)에 저장할 수 있다. 프로세서(310)는 프레임(610-7)에 대한 디코딩된 프레임을 버퍼들(650) 중 버퍼(657)에 저장할 수 있다.
일 실시예에 따르면 프로세서(310)는 제1 시점에 대응하는 프레임(610-8)에 대한 디코딩에 기반하여, 프레임(610-8)에 대한 디코딩된 프레임을 버퍼(예: 버퍼(651))에 저장하지 않고 출력할 수 있다. 따라서, 프로세서(310)는 프레임(610-8)에 대한 디코딩된 프레임을 출력하는 것에 기반하여, 버퍼들(650)에, 프레임(610-1) 내지 프레임(610-7)에 대한 디코딩된 프레임들을 저장할 수 있다.
일 실시예에 따르면 상태(1020)에서, 프로세서(310)는 제2 탐색 요청을 식별할 수 있다. 프로세서(310)는 재생 위치 표시부(381)를 통해 제2 탐색 요청을 식별(또는 수신)할 수 있다. 프로세서(310)는 재생기(352)를 이용하여, 제2 탐색 요청이 지시하는 제2 시점을 식별할 수 있다. 제2 시점은 제1 시점보다 빠를 수 있다. 예를 들어, 제2 탐색 요청이 지시하는 제2 시점은 1120 [ms]를 지시할 수 있다. 프로세서(310)는 제2 시점에 대응하는 프레임(610-4)을 식별할 수 있다.
일 실시예에 따르면 프로세서(310)는 버퍼들(650)에 저장된 디코딩된 프레임들에 제2 시점에 대응하는 프레임(610-4)에 대한 디코딩된 프레임이 포함되는지 여부를 식별할 수 있다. 프로세서(310)는 버퍼(654)에 프레임(610-4)에 대한 디코딩된 프레임이 포함됨을 식별할 수 있다. 프로세서(310)는 저장 관리기(355)를 이용하여, 버퍼(654)에 저장된, 프레임(610-4)에 대한 디코딩된 프레임을 출력할 수 있다. 버퍼(654)에 저장된, 프레임(610-4)에 대한 디코딩된 프레임이 출력됨에 따라, 프레임(610-4)에 대한 디코딩된 프레임을 버퍼(654)에서 삭제할 수 있다. 실시 예에 따라, 프로세서(310)는 프레임(610-4)에 대한 디코딩된 프레임을 버퍼(654)에서 삭제하는 것에 기반하여, 버퍼(654)를 디코더(362)에게 반환할 수 있다.
도 11a는, 탐색 요청을 위해 할당된 지정된 개수의 버퍼들에 오류가 발생한 경우, 전자 장치의 동작에 관한 흐름도를 도시한다.
도 11b는, 탐색 요청을 위해 할당된 버퍼들의 개수가 감소되는 예를 도시한다.
도 11a를 참고하면, 프로세서(310)는 디코딩을 위해 할당된 제1 버퍼들 중 지정된 개수의 버퍼들을 탐색 요청을 위해 할당할 수 있다. 프로세서(310)는 할당된 지정된 개수의 버퍼들을 탐색 요청이 유지되는 동안 디코더(362)에게 반환하지 않을 수 있다. 디코딩을 위해 할당된 제1 버퍼들 중 일부가 탐색 요청을 위해 할당되므로, 지정된 개수에 오류가 발생한 경우, 디코더(362)에서 사용가능한 버퍼의 부족이 발생할 수 있다. 예를 들어, 탐색 요청을 위해 할당된 버퍼들의 개수가 7개로 설정되었으나, 코덱의 출력 개수 설정의 오류로 인해 탐색 요청을 위해 할당된 버퍼들의 개수가 5개가 되어야 할 수 있다.
이하의 동작 1110 내지 동작 1150은 디코더(362)에서 사용가능한 버퍼의 부족의 발생에 따른 문제를 해결하기 위한 프로세서(310)의 동작의 예가 설명될 것이다.
동작 1110에서, 프로세서(310)는 디코더(362)의 성능을 식별할 수 있다. 동작 1120에서, 프로세서(310)는 디코더(362)의 성능에 기반하여, 임계 시간을 결정할 수 있다. 동작 1110 및 동작 1120에서, 프로세서(210)는 디코더(362)의 성능을 식별하고, 디코더(362)의 성능에 기반하여, 임계 시간을 결정할 수 있다. 예를 들어, 프로세서(310)는 임계 시간을 결정하기 위해 디코더(362)의 성능을 식별할 수 있다. 이하에서는, 디코더(362)의 성능의 구체적인 예 및 성능에 따라 결정되는 임계 시간의 예가 설명될 것이다.
실시 예에 따라, 전자 장치(300)가 하드웨어 코덱(340)을 포함하고, 디코더(362)(또는 코덱부(360))가 하드웨어 코덱(340)에 포함되는 경우, 하드웨어 코덱(340)(또는 디코더(362))의 정확한 성능을 추정할 수 있다.
예를 들어, 코덱부(360)의 성능으로 해상도에 따른 FPS가 사용될 수 있다. 코덱부(360)의 해상도에 따른 FPS는 하기의 표와 같이 구성될 수 있다.
표 1은 h.264 코덱의 해상도에 따른 FPS를 나타낸다. 이는 예시적인 것이며, 프로세서(310) 다른 코덱들에 대한 해상도에 따른 FPS를 식별할 수도 있다.
표 1을 참고하면, 비디오 콘텐트의 해상도가 (1920 x 1080) 인 경우 FPS가 480일 수 있다. 프로세서(310)는 하나의 프레임에 대한 디코딩 시간이 2.08(=1000/480) [ms]임을 식별할 수 있다. 프로세서(310)는 디코딩된 프레임이 전달되는 경로에 기반하여, 임계 시간을 결정할 수 있다. 예를 들어, 프로세서(310)는 하나의 프레임에 대한 디코딩 시간의 배수(예: 2배 또는 3배)에 기반하여 임계 시간을 결정할 수 있다.
표 1을 참고하면, 비디오 콘텐트의 해상도가 (2560 x 1440) 인 경우, (3840 x 2160)의 해상도에 대한 FPS가 사용될 수 있다. 프로세서(310)는, 비디오 콘텐트의 해상도가 (2560 x 1440) 인 경우, FPS를 240으로 식별할 수 있다. 프로세서(310)는 하나의 프레임에 대한 디코딩 시간이 4.16(=1000/240) [ms]임을 식별할 수 있다. 프로세서(310)는 임계 시간을 8 [ms]로 결정할 수 있다.
예를 들어, 코덱부(360)의 성능으로 블록 크기(block size)에 따른 1초 당 블록의 처리 개수(block-per-second)가 사용될 수 있다. 코덱부(360)의 블록 크기(block size)에 따른 1초 당 블록의 처리 개수(block-per-second)는 하기의 표와 같이 구성될 수 있다.
표 2는 h.264 코덱의 블록 크기(block size)에 따른 1초 당 블록의 처리 개수(block-per-second)를 나타낸다. 이는 예시적인 것이며, 프로세서(310) 다른 코덱들의 블록 크기(block size)에 따른 1초 당 블록의 처리 개수(block-per-second)를 식별할 수도 있다.
표 2를 참고하면, 프로세서(310)는 h.264 코덱을 이용하여, 1,990,656,000 개의 픽셀들을 1초에 디코딩할 수 있다. 1초에 디코딩되는 픽셀들의 개수는 블록 크기(즉, (16x16))와 1초 당 블록의 처리 개수(즉, 7776000)의 곱으로 식별될 수 있다. 비디오 콘텐트의 해상도가 (1920x1080)인 경우, 프로세서(310)는 h.264 코덱을 통해, 1 초당 960개의 프레임들( (1,990,656,000 / 1920) / 1080)을 디코딩할 수 있음을 식별할 수 있다.
상술한 바와 같이 프로세서(310)는 저장 관리기(355)를 통해 임계 시간을 설정할 수 있다.
동작 1130에서, 프로세서(310)는 디코딩된 프레임이 획득되는 시간이 임계 시간을 초과하는지 여부를 식별할 수 있다. 프로세서(310)는 디코더(362)의 동작에 문제가 발생하는지 여부를 식별하기 위해, 디코딩된 프레임이 획득되는 시간이 임계 시간을 초과하는지 여부를 식별할 수 있다.
동작 1140에서, 디코딩된 프레임이 획득되는 시간이 임계 시간을 초과하지 않는 경우, 프로세서(310)는 탐색 요청을 위해 할당된 버퍼들의 개수를 유지할 수 있다. 프로세서(310)는 디코딩된 프레임이 획득되는 시간이 임계 시간을 초과하지 않음을 식별하는 것에 기반하여, 탐색 요청을 위해 할당된 버퍼들의 개수를 유지할 수 있다. 프로세서(310)는 디코딩된 프레임이 획득되는 시간이 임계 시간을 내임을 식별하는 것에 기반하여, 탐색 요청을 위해 할당된 버퍼들의 개수를 유지할 수 있다. 프로세서(310)는 디코딩된 프레임이 획득되는 시간이 임계 시간을 내인 것의 결정에 따라, 탐색 요청을 위해 할당된 버퍼들의 개수를 유지할 수 있다.
동작 1150에서, 디코딩된 프레임이 획득되는 시간이 임계 시간을 초과하는 경우, 프로세서(310)는 탐색 요청을 위해 할당된 버퍼들의 개수를 감소시킬 수 있다. 프로세서(310)는 디코딩된 프레임이 획득되는 시간이 임계 시간을 초과함을 식별하는 것에 기반하여, 탐색 요청을 위해 할당된 버퍼들의 개수를 감소시킬 수 있다. 프로세서(310)는 디코딩된 프레임이 획득되는 시간이 임계 시간을 초과하는 것의 결정에 따라, 탐색 요청을 위해 할당된 버퍼들의 개수를 감소시킬 수 있다. 프로세서(310)는 감소시킨 적어도 하나의 버퍼를 디코더(362)에게 반환할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 디코딩된 프레임이 획득되는 시간이 임계 시간을 초과함을 식별하는 것에 기반하여, 탐색 요청을 위해 할당된 버퍼들의 개수를 1개씩 감소시킬 수 있다. 프로세서(310)는 디코딩된 프레임이 획득되는 시간이 임계 시간 내일 때까지 탐색 요청을 위해 할당된 버퍼들의 개수를 1개씩 감소시킬 수 있다. 예를 들어, 프로세서(310)는 디코딩된 프레임이 획득되는 시간이 임계 시간을 초과함을 식별하는 것에 기반하여, 탐색 요청을 위해 할당 가능한 버퍼들의 최대 개수를 감소시킬 수 있다.
도 11b에서 탐색 요청을 위해 할당된 버퍼들의 개수가 감소되는 구체적인 예가 설명될 것이다.
도 11b를 참고하면, 상태(1191)에서, 프로세서(310)는 제1 탐색 요청에 기반하여, 프레임(610-1)부터 프레임(610-7)까지의 프레임들을 디코딩할 수 있다. 프로세서(310)는 프레임(610-1)부터 프레임(610-7)까지의 프레임들에 대한 디코딩된 프레임들을 버퍼들(650)에 저장할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 프레임(610-1)부터 프레임(610-7)까지의 프레임들에 대한 디코딩된 프레임들이 버퍼들(650)에 저장된 후, 디코딩된 프레임이 획득되는 시간이 임계 시간을 초과함을 식별할 수 있다.
상태(1192)에서, 프로세서(310)는 디코딩된 프레임이 획득되는 시간이 임계 시간을 초과함을 식별하는 것에 기반하여, 버퍼들(650) 중 하나(예: 버퍼(651))를 디코더(362)에게 반환할 수 있다.
일 실시 예에 따르면, 임계 시간이 4 [ms]로 결정된 경우, 4 [ms] 내에 디코딩된 프레임이 획득되지 않는 경우, 프로세서(310)는 저장 관리기(355)를 이용하여, 버퍼들(650)의 개수를 식별할 수 있다. 프로세서(310)는 버퍼들(650)의 개수가 7 개인 경우, 가장 첫번째로 획득된 프레임(610-1)에 대한 디코딩된 프레임을 버퍼(651)에서 제거할 수 있다. 프로세서(310)는 버퍼(651)를 디코더(362)에게 반환할 수 있다. 프로세서(310)는 버퍼들(650)의 개수를 7개에서 6개로 변경할 수 있다. 프로세서(310)는 디코딩된 프레임이 획득되는 시간이 임계 시간 내일 때까지 탐색 요청을 위해 할당된 버퍼들의 개수를 1개씩 감소시킬 수 있다.
도 12a는 제2 모드에 기반하여, 탐색 요청을 위해 할당된 버퍼들의 예를 도시한다.
도 12b는 제2 모드에 기반하여, 탐색 요청을 할당된 추가적인 버퍼들의 예를 도시한다.
도 12a를 참고하면, 프로세서(310)는 제2 모드에 기반하여, 비디오 콘텐트를 재생할 수 있다. 예를 들어, 프로세서(310)는 비디오 콘텐트를 탐색하기 위한 모드를 제2 모드로 설정할 수 있다.
일 실시 예에 따르면, 제2 모드에서, 재생기(352)는 디코더(362)에 할당된 버퍼들을 복사할 수 있다. 제2 모드에서, 탐색 요청을 위해 할당될 제2 버퍼들의 개수가 제한되지 않을 수 있다. 프로세서(310)는 제2 모드에서, 버퍼 포인터(또는 버퍼 인덱스)가 아닌, 메모리(320) 내의 버퍼를 직접적으로 할당할 수 있다. 탐색 요청을 위해 할당된 버퍼들은 디코더(362)에 할당된 버퍼들이 복사되어 구성될 수 있다.
일 실시 예에 따르면, 프로세서(310)는 제2 버퍼들(1250)을 탐색 요청을 위해 할당할 수 있다. 예를 들어, 제2 버퍼들(1250)의 개수는 10개로 구성될 수 있다. 예를 들어, 제2 버퍼들(1250)은, 버퍼(1251), 버퍼(1252), 버퍼(1253), 버퍼(1254), 버퍼(1255), 버퍼(1256), 버퍼(1257), 버퍼(1258), 버퍼(1259), 및 버퍼(1260)를 포함할 수 있다.
일 실시 예에 따르면, 도 12a와 같이, 프로세서(310)는 제2 버퍼들(1250)에 포함된 버퍼들 각각은 디코딩된 프레임, 타임스탬프, 듀레이션, 버퍼 크기, 및 버퍼 주소를 저장할 수 있다. 제2 모드에서, 메모리(320) 내의 제2 버퍼들(1250)이 직접적으로 할당되는 경우, 할당된 제2 버퍼들(1250)의 최대 개수가 제1 모드에서 탐색 요청을 위해 할당된 버퍼들의 최대 개수보다 크게 설정될 수 있다.
일 실시 예에 따르면, 프로세서(310)는 도 10과 같이, 탐색 요청에 따라, 디코딩된 프레임이 제2 버퍼들(1250) 중 하나의 버퍼에서 출력되는 경우, 상기 버퍼에서 디코딩된 프레임을 삭제할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 탐색 요청에 따라 제2 버퍼들(1250) 중 하나의 버퍼에서 출력되는 경우에도, 상기 버퍼에서 디코딩된 프레임을 삭제하지 않을 수 있다. 프로세서(310)는 제2 버퍼들(1250)의 개수를 동적으로 변경할 수 있으며, 제2 버퍼들(1250)의 개수를 충분히 유지할 수 있으므로, 탐색 요청에 따라 제2 버퍼들(1250) 중 하나의 버퍼에서 출력되는 경우에도, 상기 버퍼에서 디코딩된 프레임을 삭제하지 않을 수 있다.
실시 예에 따라, 프로세서(310)는 탐색 요청을 위해 제2 버퍼들(1250) 뿐만 아니라 제3 버퍼들을 더 할당할 수 있다. 제3 버퍼들은 도 12b와 같이 구성될 수 있다. 예를 들어, 더블 버퍼링이 적용되는 경우, 프로세서(310)는 탐색 요청을 위해 제2 버퍼들(1250)에 추가로 제3 버퍼들(예: 도 12b의 제3 버퍼들(1280))을 탐색 요청을 위해 할당할 수 있다.
도 12a 및 도 12b를 참고하면, 프로세서(310)는 도 12a와 같이 제2 버퍼들(1250)에 디코딩된 프레임을 저장한 경우, 제2 탐색 요청이 지시하는 제2 시점에 따른 프레임(620-2)이 포함된 프레임 세트가 제1 탐색 요청이 지시하는 제1 시점에 따른 프레임(610-9)이 포함된 프레임 세트와 구별됨을 식별할 수 있다.
일 실시 예에 따르면, 도 12a와 같이, 제1 탐색 요청에 기반하여, 프로세서(310)는 프레임(610-1) 내지 프레임(610-9)에 대한 디코딩된 프레임들을 제2 버퍼들(1250) 중 9 개의 버퍼들(예: 버퍼(1251) 내지 버퍼(1259))에 저장할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 제2 탐색 요청에 기반하여, 9 개의 버퍼들에 저장된 디코딩된 프레임들의 제1 프레임 세트와 구별되는 제2 프레임 세트를 식별할 수 있다. 프로세서(310)는 제2 프레임 세트 내의 복수의 프레임들(620)을 식별할 수 있다. 프로세서(310)는 복수의 프레임들(620) 중 I 프레임(620-1)부터 프레임(620-2)까지의 프레임들에 대한 디코딩을 수행할 수 있다. 프로세서(310)는 프레임(620-1)부터 프레임(620-2)까지의 프레임들에 대한 디코딩에 기반하여 획득된 디코딩된 프레임들을 제2 버퍼들(1250)과 구별되는 제3 버퍼들(1280)에 저장할 수 있다. 예를 들어, 제3 버퍼들(1280)은, 버퍼(1281), 버퍼(1282), 버퍼(1283), 버퍼(1284), 버퍼(1285), 버퍼(1286), 버퍼(1287), 버퍼(1288), 버퍼(1289), 및 버퍼(1290)를 포함할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 제2 탐색 요청에 기반하여, 제2 버퍼들(1250)에 저장된 데이터를 삭제하지 않고, 제3 버퍼들(1280)을 추가적으로 할당할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 제3 탐색 요청이 지시하는 제3 시점에 따른 프레임(예: 프레임(610-4))에 대한 디코딩된 프레임이 제2 버퍼들(1250)에 저장된, 디코딩된 프레임들 중 하나에 상응함을 식별할 수 있다. 프로세서(310)는 제3 시점에 따른 프레임에 대한 디코딩된 프레임을 제2 버퍼들(1250) 중 하나로부터 출력할 수 있다.
상술한 바와 같이, 프로세서(310)는 제2 버퍼들(1250)을 제1 프레임 세트를 위해 할당하고, 제3 버퍼들(1280)을 제2 프레임 세트를 위해 할당할 수 있다. 프로세서(310)는 탐색 요청이 2 개의 프레임 세트들 내에서 식별되는 경우, 제2 버퍼들(1250) 및 제3 버퍼들(1280)에 저장되고, 상기 탐색 요청에 따른 디코딩된 프레임을 출력할 수 있다. 실시 예에 따라, 탐색 요청이 2 개의 프레임 세트들과 구별되는 제3 프레임 세트에서 식별되는 경우, 제2 버퍼들(1250)에 저장된 데이터를 모두 삭제하고, 제2 버퍼들(1250)에 제3 프레임 세트에 대한 디코딩된 프레임들을 저장할 수 있다.
도 12b는 2개의 프레임 세트들을 위해 제2 버퍼들(1250) 및 제3 버퍼들(1280)이 구성되는 예가 설명되었으나, 이에 한정되는 것은 아니다. 실시 예에 따라, 버퍼들은 3개 이상의 프레임 세트들을 위해 할당될 수도 있다.
도 13a는, 탐색 요청을 위한 사용자 인터페이스의 예를 도시한다.
도 13b는, 탐색 요청을 위한 사용자 인터페이스의 예를 도시한다.
도 13c는, 탐색 요청을 위한 사용자 인터페이스의 예를 도시한다.
도 13a 내지 도 13c를 참고하면, 전자 장치(300)의 프로세서(310)는 비디오 콘텐트를 재생하기 위한 사용자 인터페이스(1320, 1340, 1360)을 디스플레이(330)를 통해 표시할 수 있다. 예를 들어, 사용자 인터페이스(1320, 1340, 1360)는 비디오 콘텐트(1321, 1341, 1361)를 재생하기 위해 구성될 수 있다.
도 13a를 참고하면, 예(1310)에서, 사용자 인터페이스(1320)는 갤러리 애플리케이션과 관련될 수 있다. 갤러리 애플리케이션은 비디오 콘텐트의 프리뷰를 위한 기능을 제공할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 비디오 콘텐트에 관한 필름스트립(filmstrip)(1329)을 표시할 수 있다. 프로세서(310)는 필름스트립 상에서 재생 시점을 이동하기 위한 요소(1322)를 표시할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 요소(1322)가 제1 지점(1323)으로 이동되는 것에 기반하여, 제1 탐색 요청을 식별할 수 있다. 일 예로, 프로세서(310)는 제1 탐색 요청에 관한 제1 프레임을 식별할 수 있다. 프로세서(310)는 제1 프레임이 포함된 프레임 세트를 식별할 수 있다. 프로세서(310)는 프레임 세트(또는 프레임 세트의 복수의 프레임들) 중 기준 프레임으로부터 제1 프레임까지의 디코딩을 수행할 수 있다. 프로세서(310)는 하나 이상의 디코딩된 프레임을 메모리(320)에 저장할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 요소(1322)가 제1 지점(1323)으로부터 제2 지점(1324)로 이동됨을 식별할 수 있다. 프로세서(310)는 요소(1322)가 제1 지점(1323)으로부터 제2 지점(1324)로 이동됨을 식별하는 것에 기반하여, 제2 탐색 요청을 식별할 수 있다. 일 예로, 프로세서(310)는 제2 탐색 요청에 관한 제2 프레임을 식별할 수 있다. 프로세서(310)는 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함됨을 식별할 수 있다. 프로세서(310)는 제2 프레임에 대한 디코딩을 수행하지 않고, 제2 프레임에 대응하는 디코딩된 프레임을 출력할 수 있다. 프로세서(310)는 제2 프레임에 대한 디코딩을 수행하지 않으므로, 지연 없이 제2 프레임을 표시할 수 있다.
도 13b를 참고하면, 예(1330)에서, 사용자 인터페이스(1340)는 영상 재생 애플리케이션과 관련될 수 있다.
일 실시 예에 따르면, 프로세서(310)는 비디오 콘텐트의 재생 구간을 나타내는 요소(1349) (예: 재생 바, 스크럽 바(scrub bar), 스크러버(scrubber) 탐색 바(seek bar), 프로그레스 바(progress bar) 또는 트랙 슬라이더(track slider))를 표시할 수 있다. 프로세서(310)는 요소(1349) 상에서 재생 구간의 시점을 지시하기 위한 요소(1342)를 표시할
일 실시 예에 따르면, 프로세서(310)는 요소(1342)가 제1 지점(1343)으로 이동되는 것에 기반하여, 제1 탐색 요청을 식별할 수 있다. 일 예로, 프로세서(310)는 제1 탐색 요청에 관한 제1 프레임을 식별할 수 있다. 프로세서(310)는 제1 프레임이 포함된 프레임 세트를 식별할 수 있다. 프로세서(310)는 프레임 세트(또는 프레임 세트의 복수의 프레임들) 중 기준 프레임으로부터 제1 프레임까지의 프레임들의 디코딩을 수행할 수 있다. 프로세서(310)는 하나 이상의 디코딩된 프레임을 메모리(320)에 저장할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 요소(1342)가 제1 지점(1343)으로부터 제2 지점(1344)로 이동됨을 식별할 수 있다. 프로세서(310)는 요소(1342)가 제1 지점(1343)으로부터 제2 지점(1344)로 이동됨을 식별하는 것에 기반하여, 제2 탐색 요청을 식별할 수 있다. 일 예로, 프로세서(310)는 제2 탐색 요청에 관한 제2 프레임을 식별할 수 있다. 프로세서(310)는 제2 프레임에 대응하는 디코딩된 프레임이 하나 이상의 디코딩된 프레임들에 포함됨을 식별할 수 있다. 프로세서(310)는 제2 프레임에 대한 디코딩을 수행하지 않고, 제2 프레임에 대응하는 디코딩된 프레임을 출력할 수 있다. 프로세서(310)는 제2 프레임에 대한 디코딩을 수행하지 않으므로, 지연 없이 제2 프레임을 표시할 수 있다.
도 13c를 참고하면, 예(1350)에서, 사용자 인터페이스(1360)는 영상 재생 애플리케이션과 관련될 수 있다.
일 실시 예에 따르면, 프로세서(310)는 비디오 콘텐트의 재생 구간을 나타내는 요소를 표시하지 않을 수 있다. 실시 예에 따라, 프로세서(310)는 지정된 입력(예: 탭 입력, 버튼 입력)에 기반하여, 비디오 콘텐트의 재생 구간을 나타내는 요소를 표시할 수 있다.
일 실시 예에 따르면, 프로세서(310)는 제1 지점(1362)으로부터 제2 지점(1363)까지 이동되는 터치 입력을 식별할 수 있다. 제1 지점(1362)으로부터 제2 지점(1363)까지의 터치 입력이 이동한 길이에 기반하여, 탐색 요청을 식별할 수 있다. 예를 들어, 프로세서(310)는 식별된 탐색 요청에 대응하는 시점에 따른 프레임에 대한 디코딩된 프레임이 메모리(320)에 저장되었는지 여부를 식별할 수 있다. 프로세서(310)는 상기 시점에 따른 상기 프레임에 대한 디코딩된 프레임이 메모리(320)에 저장됨을 식별하는 것에 기반하여 상기 디코딩된 프레임을 출력할 수 있다.
도 13a, 도 13b, 및 도 13c를 참고하면, 프로세서(310)는 탐색 요청(예: 역방향의 탐색 요청)에 기반하여, 저장 관리기(355)는 출력 버퍼의 개수에 기반하여, 탐색 요청을 위한 버퍼들을 할당할 수 있다. 도 13a, 도 13b, 및 도 13c와 같이, 탐색 요청(예: 역방향을 탐색 요청)이 반복적으로 식별되는 경우, 버퍼에 저장된 프레임(또는 디코딩된 프레임)이 즉시 출력될 수 있다. 상술한 실시 예에 따라, 지연시간이 감소됨으로써, 사용자 경험이 향상될 수 있다.
상술한 실시 예들은, 전자 장치(300)에서 수행되는 예가 설명되었으나 이에 한정되는 것은 아니다. 탐색 요청은 전자 장치(300)와 연결된 외부 전자 장치(예: 웨어러블 장치, 차량)에서 식별될 수 있다. 전자 장치(300)의 프로세서(310)는 외부 전자 장치로부터 탐색 요청을 수신하고, 수신된 탐색 요청에 기반하여 프레임을 출력할 수도 있다. 실시 예에 따라, 프로세서(310)는 외부 전자 장치에서 비디오 콘텐트가 출력되는 동안, 전자 장치(300)에서 탐색 요청을 수신하고, 탐색 요청을 외부 전자 장치에게 송신할 수도 있다.
일 실시 예에 따르면, 프로세서(310)는 저장 관리기(355)를 이용하여, 버퍼의 크기를 변경할 수 있다. 예를 들어, 프로세서(310)는 저장 관리기(355)를 이용하여, 디스플레이(330)의 해상도에 따라 최종 출력되는 프레임 형태에 기반하여 버퍼의 크기를 결정할 수 있다. 예를 들어, 프로세서(310)는 디스플레이(330)의 해상도를 식별할 수 있다. 프로세서(310)는 폴더블 디스플레이, 롤러블 디스플레이, 및/또는 가상 공간을 표시하기 위한 디스플레이에 기반하여, 출력 해상도를 식별할 수 있다. 프로세서(310)는 출력 해상도에 기반하여, 버퍼의 크기를 결정할 수 있다. 프로세서(310)는 디코딩된 프레임을, 출력 해상도에 기반하여, 스케일링하고, 스케일링된 프레임을 저장할 수 있다. 프로세서(310)는 실시간으로 출력되는 디스플레이(330)의 크기를 식별하고, 버퍼의 크기를 실시간으로 변경할 수 있다.
일 실시 예에 따르면, 전자 장치(electronic device)는, 디스플레이, 버퍼들을 포함하고, 인스트럭션들을 저장하는 메모리, 및 처리 회로를 포함하는 적어도 하나의 프로세서를 포함할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 비디오 콘텐트에 관한 제1 탐색 요청(seek request)에 기반하여, 상기 비디오 콘텐트(video content)의 GOP(group of pictures)내의 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 제1 프레임(frame)을 식별하도록, 상기 전자 장치를 야기할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 복수의 프레임들 내의 기준 프레임으로부터 상기 제1 프레임까지의 프레임들의 디코딩을 수행하도록, 상기 전자 장치를 야기할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 디코딩된 기준 프레임으로부터 상기 디코딩된 제1 프레임까지의 디코딩된 프레임들 중 하나 이상의 디코딩된 프레임들(one or more decoded frames)을 상기 메모리의 버퍼들에 저장하도록, 상기 전자 장치를 야기할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 제1 탐색 요청과 구별되는 제2 탐색 요청에 기반하여, 상기 제2 탐색 요청에 관한 제2 프레임에 대응하는 디코딩된 프레임이 상기 버퍼들에 저장된 적어도 하나의 디코딩된 프레임에 포함되는 결정에 따라(in association with a determination that), 상기 제2 프레임에 대응하는 상기 디코딩된 프레임을 상기 디스플레이를 통해 표시하도록, 상기 전자 장치를 야기할 수 있다.
일 실시 예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 제1 탐색 요청과 구별되는 제2 탐색 요청에 기반하여, 상기 제2 탐색 요청에 관한 상기 제2 프레임에 대응하는 상기 디코딩된 프레임이 상기 하나 이상의 디코딩된 프레임들에 포함되지 않는 결정에 따라 상기 제2 프레임에 대한 디코딩을 수행하도록, 상기 전자 장치를 야기할 수 있다.
일 실시 예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 비디오 콘텐트에 관한 설정 정보에 기반하여, 상기 디코딩을 위해 할당된 제1 버퍼들 중, 지정된 개수의 버퍼들을, 탐색 요청을 위해 할당할 것을 결정하도록, 상기 전자 장치를 야기할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 하나 이상의 디코딩된 프레임들을, 상기 디코딩을 위해 할당된 상기 제1 버퍼들 중, 상기 지정된 개수의 버퍼들에 저장하도록, 상기 전자 장치를 야기할 수 있다.
일 실시 예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 비디오 콘텐트에 관한 상기 설정 정보에 기반하여, 상기 제1 버퍼들과 구별되고, 상기 탐색 요청을 위해 할당될 제2 버퍼들의 개수를 결정하도록, 상기 전자 장치를 야기할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 하나 이상의 디코딩된 프레임들을, 상기 결정된 개수의 상기 제2 버퍼들에 저장하도록, 상기 전자 장치를 야기할 수 있다.
일 실시 예에 따르면, 상기 비디오 콘텐트에 관한 상기 설정 정보는, 상기 비디오 콘텐트를 탐색하기 위한 모드에 관한 정보, 상기 비디오 콘텐트를 위한 메모리 자원에 관한 정보, 상기 비디오 콘텐트의 재생 횟수, 상기 비디오 콘텐트의 평균 재생 시간, 상기 비디오 콘텐트에 관한 탐색 요청들의 횟수, 또는 상기 비디오 콘텐트의 상기 GOP(group of pictures) 내의 프레임들의 개수 중 적어도 하나를 포함할 수 있다.
일 실시 예에 따르면, 상기 복수의 프레임들은, 시간에 기반하여 순차적으로 배열(sequentially arranged)될 수 있다. 상기 디코딩은, 상기 기준 프레임으로부터 상기 제1 프레임까지 순차적으로 수행될 수 있다.
일 실시 예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 기준 프레임으로부터 상기 제1 프레임까지의 상기 프레임들의 상기 디코딩에 의해 획득된 디코딩된 프레임들 중, 상기 하나 이상의 디코딩된 프레임들을 상기 메모리에 저장하도록, 상기 전자 장치를 야기할 수 있다.
일 실시 예에 따르면, 상기 하나 이상의 디코딩된 프레임들의 개수는, 상기 하나 이상의 디코딩된 프레임들이 저장되는, 상기 메모리의 버퍼들의 개수에 상응할 수 있다.
일 실시 예에 따르면, 상기 비디오 콘텐트는, 복수의 GOP들을 포함할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 GOP들 중, 상기 제1 탐색 요청에 기반하여 상기 GOP를 식별하도록, 상기 전자 장치를 야기할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 GOP 내의 상기 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 상기 제1 프레임을 식별하도록, 상기 전자 장치를 야기할 수 있다.
일 실시 예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 복수의 GOP들 중, 상기 제2 탐색 요청에 기반하여 다른 GOP를 식별하도록, 상기 전자 장치를 야기할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 다른 GOP 내의 복수의 다른 프레임들에 포함된 기준 프레임으로부터 상기 제2 프레임까지의 프레임들의 디코딩을 수행하도록, 상기 전자 장치를 야기할 수 있다.
일 실시 예에 따르면, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 복수의 GOP들 중, 상기 제2 탐색 요청에 기반하여 상기 다른 GOP를 식별하는 것에 기반하여, 상기 메모리에 저장된 상기 하나 이상의 디코딩된 프레임들을 제거하도록, 상기 전자 장치를 야기할 수 있다. 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시, 상기 복수의 다른 프레임들 내의 상기 기준 프레임으로부터 상기 제2 프레임까지의 상기 프레임들의 상기 디코딩에 기반하여, 하나 이상의 디코딩된 다른 프레임들을 상기 메모리에 저장하도록, 상기 전자 장치를 야기할 수 있다.
일 실시 예에 따르면, 상기 제1 탐색 요청은, 상기 비디오 콘텐트의 재생 구간 중 제1 시점을 지시할 수 있다. 상기 제2 탐색 요청은, 상기 비디오 콘텐트의 상기 재생 구간 중 상기 제1 시점과 구별되는 제2 시점을 지시할 수 있다.
일 실시 예에 따르면, 상기 제1 프레임은, 상기 비디오 콘텐트의 상기 재생 구간 중, 상기 제1 시점에서 출력될 수 있다. 상기 제2 프레임은, 상기 비디오 콘텐트의 상기 재생 구간 중, 상기 제2 시점에서 출력될 수 있다.
일 실시 예에 따르면, 상기 기준 프레임은, I 프레임(intra-coded frame)에 상응할 수 있다. 하나 이상의 디코딩된 프레임들 중 상기 기준 프레임을 제외한 적어도 하나의 나머지 프레임 각각은, P 프레임(predicted frame) 또는 B 프레임(bi-directionally predicted frame) 중 하나에 상응할 수 있다.
일 실시 예에 따르면, 전자 장치에 의해 수행되는 방법은, 비디오 콘텐트에 관한 제1 탐색 요청(seek request)에 기반하여, 상기 비디오 콘텐트(video content)의 GOP(group of pictures) 내의 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 제1 프레임(frame)을 식별하는 동작을 포함할 수 있다. 상기 방법은, 상기 복수의 프레임들 내의 기준 프레임으로부터 상기 제1 프레임까지의 프레임들의 디코딩을 수행하는 동작을 포함할 수 있다. 상기 방법은, 상기 디코딩된 기준 프레임으로부터 상기 디코딩된 제1 프레임까지의 디코딩된 프레임들 중 하나 이상의 디코딩된 프레임들(one or more decoded frames)을 상기 전자 장치의 메모리의 버퍼들에 저장하는 동작을 포함할 수 있다. 상기 방법은, 상기 제1 탐색 요청과 구별되는 제2 탐색 요청에 기반하여, 상기 제2 탐색 요청에 관한 제2 프레임에 대응하는 디코딩된 프레임이 상기 버퍼들에 저장된 적어도 하나의 디코딩된 프레임에 포함되는 결정에 따라(in association with a determination that), 상기 제2 프레임에 대응하는 상기 디코딩된 프레임을 상기 전자 장치의 디스플레이를 통해 표시하는 동작을 포함할 수 있다.
일 실시 예에 따르면, 상기 방법은, 상기 제1 탐색 요청과 구별되는 제2 탐색 요청에 기반하여, 상기 제2 탐색 요청에 관한 상기 제2 프레임에 대응하는 상기 디코딩된 프레임이 상기 하나 이상의 디코딩된 프레임들에 포함되지 않는 결정에 따라 상기 제2 프레임에 대한 디코딩을 수행하는 동작을 포함할 수 있다.
일 실시 예에 따르면, 상기 방법은, 상기 비디오 콘텐트에 관한 설정 정보에 기반하여, 상기 디코딩을 위해 할당된 제1 버퍼들 중, 지정된 개수의 버퍼들을, 탐색 요청을 위해 할당할 것을 결정하는 동작을 포함할 수 있다. 상기 방법은, 상기 하나 이상의 디코딩된 프레임들을, 상기 디코딩을 위해 할당된 상기 제1 버퍼들 중, 지정된 개수의 버퍼들에 저장하는 동작을 포함할 수 있다.
일 실시 예에 따르면, 상기 방법은, 상기 비디오 콘텐트에 관한 상기 설정 정보에 기반하여, 상기 제1 버퍼들과 구별되고, 상기 탐색 요청을 위해 할당될 제2 버퍼들의 개수를 결정하는 동작을 포함할 수 있다. 상기 방법은, 상기 하나 이상의 디코딩된 프레임들을, 상기 결정된 개수의 상기 제2 버퍼들에 저장하는 동작을 포함할 수 있다.
일 실시 예에 따르면, 상기 복수의 프레임들은, 시간에 기반하여 순차적으로 배열(sequentially arranged)될 수 있다. 상기 디코딩은, 상기 기준 프레임으로부터 상기 제1 프레임까지 순차적으로 수행될 수 있다.
일 실시 예에 따르면, 비-일시적 컴퓨터 판독가능 저장 매체는 하나 이상의 프로그램들을 저장할 수 있다. 상기 하나 이상의 프로그램들은, 메모리를 가지는 전자 장치의 프로세서에 의해 실행될 시, 비디오 콘텐트에 관한 제1 탐색 요청(seek request)에 기반하여, 상기 비디오 콘텐트(video content)의 GOP(group of pictures) 내의 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 제1 프레임(frame)을 식별하도록 야기하는 인스트럭션들을 포함할 수 있다. 상기 하나 이상의 프로그램들은, 상기 프로세서에 의해 실행될 시, 상기 복수의 프레임들 내의 기준 프레임으로부터 상기 제1 프레임까지의 프레임들의 디코딩을 수행하도록 야기하는 인스트럭션들을 포함할 수 있다. 상기 하나 이상의 프로그램들은, 상기 프로세서에 의해 실행될 시, 상기 디코딩된 기준 프레임으로부터 상기 디코딩된 제1 프레임까지의 디코딩된 프레임들 중 하나 이상의 디코딩된 프레임들(one or more decoded frames)을 상기 메모리의 버퍼들에 저장하도록 야기하는 인스트럭션들을 포함할 수 있다. 상기 하나 이상의 프로그램들은, 상기 프로세서에 의해 실행될 시, 상기 제1 탐색 요청과 구별되는 제2 탐색 요청에 기반하여, 상기 제2 탐색 요청에 관한 제2 프레임에 대응하는 디코딩된 프레임이 상기 버퍼들에 저장된 적어도 하나의 디코딩된 프레임에 포함되는 결정에 따라(in association with a determination that), 상기 제2 프레임에 대응하는 상기 디코딩된 프레임을 상기 디스플레이를 통해 표시하도록 야기하는 인스트럭션들을 포함할 수 있다.
본 문서에 개시된 일 실시 예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치(예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 일 실시 예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시 예들로 한정하려는 것이 아니며, 해당 실시 예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. "제1", "제2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제1) 구성요소가 다른(예: 제2) 구성요소에, "기능적으로" 또는 "통신적으로"라는 용어와 함께 또는 이런 용어 없이, "커플드" 또는 "커넥티드"라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.
본 문서의 일 실시 예에서, 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로와 같은 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일 실시 예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서의 일 실시 예들은 기기(machine)(예: 전자 장치(101)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(140))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(101))의 프로세서(예: 프로세서(120))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장 매체는, 비일시적(non-transitory) 저장 매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장 매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장 매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일 실시 예에 따르면, 본 문서에 개시된 일 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: CD-ROM(compact disc read only memory))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어™)를 통해 또는 두 개의 사용자 장치들(예: 스마트 폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
일 실시 예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있으며, 복수의 개체 중 일부는 다른 구성요소에 분리 배치될 수도 있다. 일 실시 예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 일 실시 예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.

Claims (15)

  1. 전자 장치(electronic device)에 있어서,
    디스플레이;
    버퍼들을 포함하고, 인스트럭션들을 저장하는 메모리; 및
    처리 회로를 포함하는 적어도 하나의 프로세서를 포함하고,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시,
    비디오 콘텐트에 관한 제1 탐색 요청(seek request)에 기반하여, 상기 비디오 콘텐트(video content)의 GOP(group of pictures) 내의 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 제1 프레임(frame)을 식별하고,
    상기 복수의 프레임들 내의 기준 프레임으로부터 상기 제1 프레임까지의 프레임들의 디코딩을 수행하고,
    상기 디코딩된 기준 프레임으로부터 상기 디코딩된 제1 프레임까지의 디코딩된 프레임들 중 하나 이상의 디코딩된 프레임들(one or more decoded frames)을 상기 메모리의 버퍼들에 저장하고,
    상기 제1 탐색 요청과 구별되는 제2 탐색 요청에 기반하여:
    상기 제2 탐색 요청에 관한 제2 프레임에 대응하는 디코딩된 프레임이 상기 버퍼들에 저장된 적어도 하나의 디코딩된 프레임에 포함되는 결정에 따라(in association with a determination that), 상기 제2 프레임에 대응하는 상기 디코딩된 프레임을 상기 디스플레이를 통해 표시하도록, 상기 전자 장치를 야기하는,
    전자 장치.
  2. 제1 항에 있어서, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시,
    상기 제1 탐색 요청과 구별되는 제2 탐색 요청에 기반하여:
    상기 제2 탐색 요청에 관한 상기 제2 프레임에 대응하는 상기 디코딩된 프레임이 상기 하나 이상의 디코딩된 프레임들에 포함되지 않는 결정에 따라, 상기 제2 프레임에 대한 디코딩을 수행하도록,
    상기 전자 장치를 더 야기하는,
    전자 장치.
  3. 제2 항에 있어서, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시,
    상기 비디오 콘텐트에 관한 설정 정보에 기반하여, 상기 디코딩을 위해 할당된 제1 버퍼들 중, 지정된 개수의 버퍼들을, 탐색 요청을 위해 할당할 것을 결정하고,
    상기 하나 이상의 디코딩된 프레임들을, 상기 디코딩을 위해 할당된 상기 제1 버퍼들 중, 상기 지정된 개수의 버퍼들에 저장하도록, 상기 전자 장치를 더 야기하는,
    전자 장치.
  4. 제3 항에 있어서, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시,
    상기 비디오 콘텐트에 관한 상기 설정 정보에 기반하여, 상기 제1 버퍼들과 구별되고, 상기 탐색 요청을 위해 할당될 제2 버퍼들의 개수를 결정하고,
    상기 하나 이상의 디코딩된 프레임들을, 상기 결정된 개수의 상기 제2 버퍼들에 저장하도록, 상기 전자 장치를 더 야기하는.
    전자 장치.
  5. 제4 항에 있어서, 상기 비디오 콘텐트에 관한 상기 설정 정보는,
    상기 비디오 콘텐트를 탐색하기 위한 모드에 관한 정보, 상기 비디오 콘텐트를 위한 메모리 자원에 관한 정보, 상기 비디오 콘텐트의 재생 횟수, 상기 비디오 콘텐트의 평균 재생 시간, 상기 비디오 콘텐트에 관한 탐색 요청들의 횟수, 또는 상기 비디오 콘텐트의 상기 GOP(group of pictures) 내의 프레임들의 개수 중 적어도 하나를 포함하는,
    전자 장치.
  6. 제1 항에 있어서, 상기 복수의 프레임들은,
    시간에 기반하여 순차적으로 배열(sequentially arranged)되고,
    상기 디코딩은,
    상기 기준 프레임으로부터 상기 제1 프레임까지 순차적으로 수행되는,
    전자 장치.
  7. 제6 항에 있어서, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시,
    상기 기준 프레임으로부터 상기 제1 프레임까지의 상기 프레임들의 상기 디코딩에 의해 획득된 디코딩된 프레임들 중, 상기 하나 이상의 디코딩된 프레임들을 상기 메모리에 저장하도록, 상기 전자 장치를 더 야기하는,
    전자 장치.
  8. 제7 항에 있어서, 상기 하나 이상의 디코딩된 프레임들의 개수는,
    상기 하나 이상의 디코딩된 프레임들이 저장되는, 상기 메모리의 버퍼들의 개수에 상응하는,
    전자 장치.
  9. 제2 항에 있어서, 상기 비디오 콘텐트는,
    복수의 GOP들을 포함하고,
    상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시,
    상기 복수의 GOP들 중, 상기 제1 탐색 요청에 기반하여 상기 GOP를 식별하고,
    상기 GOP 내의 상기 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 상기 제1 프레임을 식별하도록, 상기 전자 장치를 더 야기하는,
    전자 장치.
  10. 제9 항에 있어서, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시,
    상기 복수의 GOP들 중, 상기 제2 탐색 요청에 기반하여 다른 GOP를 식별하고,
    상기 다른 GOP에 포함된 복수의 다른 프레임들 내의 기준 프레임으로부터 상기 제2 프레임까지의 프레임들의 디코딩을 수행하도록, 상기 전자 장치를 더 야기하는,
    전자 장치.
  11. 제10 항에 있어서, 상기 인스트럭션들은, 상기 적어도 하나의 프로세서에 의해 개별적으로 또는 집합적으로(individually or collectively) 실행될 시,
    상기 복수의 GOP들 중, 상기 제2 탐색 요청에 기반하여 상기 다른 GOP를 식별하는 것에 기반하여, 상기 메모리에 저장된 상기 하나 이상의 디코딩된 프레임들을 제거하고,
    상기 복수의 다른 프레임들 내의 상기 기준 프레임으로부터 상기 제2 프레임까지의 상기 프레임들의 상기 디코딩에 기반하여, 하나 이상의 디코딩된 다른 프레임들을 상기 메모리에 저장하도록, 상기 전자 장치를 더 야기하는,
    전자 장치.
  12. 제2 항에 있어서, 상기 제1 탐색 요청은,
    상기 비디오 콘텐트의 재생 구간 중 제1 시점을 지시하고,
    상기 제2 탐색 요청은,
    상기 비디오 콘텐트의 상기 재생 구간 중 상기 제1 시점과 구별되는 제2 시점을 지시하는,
    전자 장치.
  13. 제12 항에 있어서, 상기 제1 프레임은,
    상기 비디오 콘텐트의 상기 재생 구간 중, 상기 제1 시점에서 출력되고,
    상기 제2 프레임은,
    상기 비디오 콘텐트의 상기 재생 구간 중, 상기 제2 시점에서 출력되는,
    전자 장치.
  14. 전자 장치에 의해 수행되는 방법에 있어서,
    비디오 콘텐트에 관한 제1 탐색 요청(seek request)에 기반하여, 상기 비디오 콘텐트(video content)의 GOP(group of pictures) 내의 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 제1 프레임(frame)을 식별하는 동작;
    상기 복수의 프레임들 내의 기준 프레임으로부터 상기 제1 프레임까지의 프레임들의 디코딩을 수행하는 동작;
    상기 디코딩된 기준 프레임으로부터 상기 디코딩된 제1 프레임까지의 디코딩된 프레임들 중 하나 이상의 디코딩된 프레임들(one or more decoded frames)을 상기 전자 장치의 메모리의 버퍼들에 저장하는 동작; 및
    상기 제1 탐색 요청과 구별되는 제2 탐색 요청에 기반하여:
    상기 제2 탐색 요청에 관한 제2 프레임에 대응하는 디코딩된 프레임이 상기 버퍼들에 저장된 적어도 하나의 디코딩된 프레임에 포함되는 결정에 따라(in association with a determination that), 상기 제2 프레임에 대응하는 상기 디코딩된 프레임을 상기 전자 장치의 디스플레이를 통해 표시하는 동작을 포함하는,
    방법.
  15. 하나 이상의 프로그램들을 저장하는 비-일시적 컴퓨터 판독가능 저장 매체에 있어서, 상기 하나 이상의 프로그램들은, 메모리를 가지는 전자 장치의 프로세서에 의해 실행될 시,
    비디오 콘텐트에 관한 제1 탐색 요청(seek request)에 기반하여, 상기 비디오 콘텐트(video content)의 GOP(group of pictures) 내의 복수의 프레임들 중, 상기 제1 탐색 요청에 관한 제1 프레임(frame)을 식별하고,
    상기 복수의 프레임들 내의 기준 프레임으로부터 상기 제1 프레임까지의 프레임들의 디코딩을 수행하고,
    상기 디코딩된 기준 프레임으로부터 상기 디코딩된 제1 프레임까지의 디코딩된 프레임들 중 하나 이상의 디코딩된 프레임들(one or more decoded frames)을 상기 메모리의 버퍼들에 저장하고,
    상기 제1 탐색 요청과 구별되는 제2 탐색 요청에 기반하여:
    상기 제2 탐색 요청에 관한 제2 프레임에 대응하는 디코딩된 프레임이 상기 버퍼들에 저장된 적어도 하나의 디코딩된 프레임에 포함되는 결정에 따라(in association with a determination that), 상기 제2 프레임에 대응하는 상기 디코딩된 프레임을 상기 디스플레이를 통해 표시하도록 야기하는 인스트럭션들을 포함하는,
    비-일시적 컴퓨터 판독가능 저장 매체.
PCT/KR2025/001723 2024-05-17 2025-02-05 비디오 콘텐트를 재생하기 위한 전자 장치, 방법, 및 비일시적 컴퓨터 판독가능 저장매체 Pending WO2025239503A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US19/062,577 US20250358431A1 (en) 2024-05-17 2025-02-25 Electronic device, method, and non-transitory computer readable storage medium for playing video content

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2024-0064854 2024-05-17
KR20240064854 2024-05-17
KR10-2024-0078769 2024-06-18
KR1020240078769A KR20250165163A (ko) 2024-05-17 2024-06-18 비디오 콘텐트를 재생하기 위한 전자 장치, 방법, 및 비일시적 컴퓨터 판독가능 저장매체

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US19/062,577 Continuation US20250358431A1 (en) 2024-05-17 2025-02-25 Electronic device, method, and non-transitory computer readable storage medium for playing video content

Publications (1)

Publication Number Publication Date
WO2025239503A1 true WO2025239503A1 (ko) 2025-11-20

Family

ID=97720324

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2025/001723 Pending WO2025239503A1 (ko) 2024-05-17 2025-02-05 비디오 콘텐트를 재생하기 위한 전자 장치, 방법, 및 비일시적 컴퓨터 판독가능 저장매체

Country Status (1)

Country Link
WO (1) WO2025239503A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101263056B1 (ko) * 2007-02-09 2013-05-09 엘지전자 주식회사 영상 재생 장치 및 방법
KR20130099515A (ko) * 2012-02-29 2013-09-06 삼성전자주식회사 키 프레임을 이용하여 컨텐츠를 재생하는 단말기의 장치 및 방법
KR101528269B1 (ko) * 2014-09-04 2015-06-16 (주)브레인키즈 동영상 재생 방법
KR20180083132A (ko) * 2017-01-12 2018-07-20 삼성전자주식회사 전자 장치 및 그 동작방법
KR20180086112A (ko) * 2017-01-20 2018-07-30 한화에어로스페이스 주식회사 웹 브라우저에서 미디어를 재생하고 탐색하는 장치 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101263056B1 (ko) * 2007-02-09 2013-05-09 엘지전자 주식회사 영상 재생 장치 및 방법
KR20130099515A (ko) * 2012-02-29 2013-09-06 삼성전자주식회사 키 프레임을 이용하여 컨텐츠를 재생하는 단말기의 장치 및 방법
KR101528269B1 (ko) * 2014-09-04 2015-06-16 (주)브레인키즈 동영상 재생 방법
KR20180083132A (ko) * 2017-01-12 2018-07-20 삼성전자주식회사 전자 장치 및 그 동작방법
KR20180086112A (ko) * 2017-01-20 2018-07-30 한화에어로스페이스 주식회사 웹 브라우저에서 미디어를 재생하고 탐색하는 장치 및 방법

Similar Documents

Publication Publication Date Title
WO2020027562A1 (en) Electronic apparatus for controlling display of virtual input interface in environment of a plurality of output screens and operating method thereof
WO2022092652A1 (ko) 사용자 인터페이스를 제공하는 전자 장치
WO2022270885A1 (ko) 플렉서블 디스플레이 및 그 플렉서블 디스플레이를 포함하는 전자 장치
WO2022203238A1 (ko) 스토리지를 포함하는 전자 장치 및 그 방법
WO2025239503A1 (ko) 비디오 콘텐트를 재생하기 위한 전자 장치, 방법, 및 비일시적 컴퓨터 판독가능 저장매체
WO2023146136A1 (ko) 비디오를 처리하는 전자 장치 및 그 동작 방법
WO2025146896A1 (ko) 이미지 프레임을 위한 버퍼를 관리하는 전자 장치, 방법, 및 비-일시적 컴퓨터 판독 가능 기록 매체
WO2022025384A1 (ko) 동영상을 재생하는 전자 장치 및 그 동영상을 재생하는 방법
WO2025023445A1 (ko) 오디오를 출력하는 전자 장치 및 그 동작 방법
WO2025258824A1 (ko) 비디오 프레임의 추가 영역을 생성하기 위한 전자 장치, 방법, 및 비일시적 컴퓨터 판독 가능 저장 매체
WO2025018836A1 (ko) 전자 장치 및 최근 화면 표시 방법
WO2025023434A1 (ko) 전자 장치 및 이를 이용한 영상 처리 방법
WO2024128628A1 (ko) 전자 장치 및 상기 전자 장치에서 동영상을 역방향으로 재생하는 방법
WO2025146955A1 (ko) 동영상을 제공하는 방법 및 이를 지원하는 전자 장치
WO2025048227A1 (ko) 멀티 소스 영상들을 하나의 트랙에 포함하는 비디오 데이터를 생성 또는 재생하는 전자 장치, 방법, 및 비-일시적 컴퓨터 판독 가능 기록 매체
WO2026038658A1 (ko) 카메라를 포함하는 전자 장치, 이의 동작 방법, 및 기록 매체
WO2025254446A1 (ko) 전자 장치 및 그 동작 방법과 저장 매체
WO2026014692A1 (ko) 멀티 윈도우를 위한 전자 장치, 방법, 및 비-일시적 컴퓨터 판독 가능 기록 매체
WO2025100710A1 (ko) 플렉서블 디스플레이를 포함하는 전자 장치 및 그의 화면 표시 방법
WO2025089769A1 (ko) 전자 장치 및 이미지 편집 방법
WO2025048623A1 (ko) 전자 장치 및 카메라 제어 방법
WO2024210693A1 (ko) 실행 화면들의 표시를 제어하는 전자 장치, 이의 동작 방법 및 기록 매체
WO2024262859A1 (ko) 회로 기판 어셈블리 및 이를 포함하는 전자 장치
WO2025121933A1 (ko) 전자 장치 및 이를 이용한 스크롤 바 표시 방법
WO2025143501A1 (ko) 프레임에 대한 구성 정보를 이용하여 미디어를 출력하는 전자 장치, 방법, 및 저장 매체

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 25803861

Country of ref document: EP

Kind code of ref document: A1