Skip to content

Commit 9eb9020

Browse files
committed
音频相关逻辑提交
1 parent 615aace commit 9eb9020

1 file changed

Lines changed: 22 additions & 13 deletions

File tree

‎Source/UnrealEnginePython/Private/UObject/UEPyAudio.cpp‎

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,21 @@ PyObject *py_ue_sound_get_data(ue_PyUObject *self, PyObject * args)
7676

7777
USoundWave *sound = ue_py_check_type<USoundWave>(self);
7878
if (!sound)
79+
{
7980
return PyErr_Format(PyExc_Exception, "UObject is not a USoundWave.");
81+
}
82+
FByteBulkData* raw_data = sound->GetCompressedData("OGG");
8083

81-
FByteBulkData raw_data = sound->RawData;
82-
83-
char *data = (char *)raw_data.Lock(LOCK_READ_ONLY);
84-
int32 data_size = raw_data.GetBulkDataSize();
85-
PyObject *py_data = PyBytes_FromStringAndSize(data, data_size);
86-
raw_data.Unlock();
87-
return py_data;
84+
if (raw_data)
85+
{
86+
char *data = (char *)raw_data->Lock(LOCK_READ_ONLY);
87+
int32 data_size = raw_data->GetBulkDataSize();
88+
PyObject *py_data = PyBytes_FromStringAndSize(data, data_size);
89+
raw_data->Unlock();
90+
return py_data;
91+
}
92+
93+
return nullptr;
8894
}
8995

9096
PyObject *py_ue_sound_set_data(ue_PyUObject *self, PyObject * args)
@@ -104,12 +110,15 @@ PyObject *py_ue_sound_set_data(ue_PyUObject *self, PyObject * args)
104110

105111
sound->FreeResources();
106112
sound->InvalidateCompressedData();
107-
108-
sound->RawData.Lock(LOCK_READ_WRITE);
109-
void *data = sound->RawData.Realloc(sound_buffer.len);
110-
FMemory::Memcpy(data, sound_buffer.buf, sound_buffer.len);
111-
sound->RawData.Unlock();
112-
113+
FByteBulkData* raw_data = sound->GetCompressedData("OGG");
114+
if (raw_data)
115+
{
116+
raw_data->Lock(LOCK_READ_WRITE);
117+
void *data = raw_data->Realloc(sound_buffer.len);
118+
FMemory::Memcpy(data, sound_buffer.buf, sound_buffer.len);
119+
raw_data->Unlock();
120+
}
121+
113122
Py_RETURN_NONE;
114123
}
115124

0 commit comments

Comments
 (0)